畢 森,楊昱昺
(寧波財經(jīng)學(xué)院,寧波 315175)
Python 語言是一種計算機程序設(shè)計語言,同時對編程語言的解釋性、編譯性、互動性以及面向?qū)ο筮M行高層次的結(jié)合,并且具備較強的可讀性和語法結(jié)構(gòu),可以為網(wǎng)絡(luò)爬蟲技術(shù)提供必要的輔助。而在當(dāng)前大數(shù)據(jù)的背景下,利用python 進行網(wǎng)絡(luò)爬蟲技術(shù)的發(fā)展也是大勢所趨,接下來將就python 語言的主要內(nèi)容及特點進行簡析,并介紹幾種促進網(wǎng)絡(luò)爬蟲技術(shù)發(fā)展的方式或方法,為大數(shù)據(jù)的發(fā)展盡綿薄之力。
Python 語言是一種解釋性語言,較其他語言省去了編譯這一環(huán)節(jié),可以節(jié)省編程人員的工作時間,而其他語言經(jīng)常使用英文關(guān)鍵字以及標(biāo)點符號,python 語言具備特色的語法結(jié)構(gòu),具備較強的可讀性,同時具備交互性、代碼定義清晰、結(jié)構(gòu)簡單、源代碼易維護、可移植、可擴展以及可嵌入等特點,可以在UNIX,Windows 和Macintosh 等系統(tǒng)上兼容,具有豐富的庫,并且可以通過開放的源代碼將其移植到其他平臺。另一方面,python 語言代表著簡單主義思想,可以使用戶專注于解決編程問題而不是關(guān)注語言本身,該語言基層都是采用C 語言進行編寫,與其他庫函數(shù)以及平臺有較高的兼容性,運行速度較快,同時該語言使用說明文檔較為簡單,易于操作,受到較多使用者的青睞。另外,隨著語言版本的更新以及各項功能的添加,python 語言得以在更廣闊的領(lǐng)域應(yīng)用,可以應(yīng)用于平臺及網(wǎng)頁的開發(fā)利用,利用python語言來發(fā)展網(wǎng)絡(luò)爬蟲技術(shù),可以在一定程度上滿足網(wǎng)絡(luò)安全以及產(chǎn)品調(diào)研時的數(shù)據(jù)支持,提升搜索引擎以及數(shù)據(jù)獲取的工作效率[1]。
要想利用python 語言來發(fā)展網(wǎng)絡(luò)爬蟲技術(shù),第一步需要做的是充分發(fā)揮python 語言的優(yōu)勢。Python 語言具有語言簡潔、使用方便以及資源豐富等優(yōu)勢,在發(fā)展網(wǎng)絡(luò)爬蟲技術(shù)時應(yīng)當(dāng)充分利用此類優(yōu)勢,如在利用python 語言研發(fā)搜索引擎或者抓取網(wǎng)頁內(nèi)容時,不需要較為繁多的代碼編輯器、編譯器、調(diào)試器以及圖形用戶界面等工具,其所需要的集成開發(fā)環(huán)境只包括文本編輯器等工具,可以通過插件使Eclipse 作為python 語言的開發(fā)工具,同時具有較高的靈活性,并進行較多應(yīng)用的開發(fā)。通過發(fā)揮python 語言的優(yōu)勢,可以使網(wǎng)絡(luò)爬蟲技術(shù)得到更加廣泛的應(yīng)用,使網(wǎng)絡(luò)爬蟲按照python 語言所編寫的程序,自動抓取網(wǎng)頁中需要的程序或者腳本,通過此種方式來獲取網(wǎng)頁的內(nèi)容及檢索信息,從而完善網(wǎng)絡(luò)爬蟲技術(shù)的應(yīng)用環(huán)節(jié)。
例如,技術(shù)人員可以利用python 語言較強的網(wǎng)絡(luò)支持庫以及爬蟲框架,通過網(wǎng)絡(luò)支持庫中的函數(shù)或者現(xiàn)有函數(shù),編寫所需要的程序代碼,對網(wǎng)頁進行下載應(yīng)用,同時利用爬蟲框架,提取該網(wǎng)站中的結(jié)構(gòu)性數(shù)據(jù),并進行信息的挖掘以及儲存,為搜索引擎提供必要的數(shù)據(jù)支持。而利用python 語言的解析庫,可以對網(wǎng)頁中的內(nèi)容進行解析,同時結(jié)合數(shù)據(jù)的表達式,從而更加方便地抓取內(nèi)容。另外,技術(shù)人員也可以利用python 語言的文本處理函數(shù),對網(wǎng)頁內(nèi)容的文本內(nèi)容以及字符串進行處理,為搜索引擎以及網(wǎng)站抓取環(huán)節(jié)提供正則表達式,來幫助網(wǎng)絡(luò)爬蟲技術(shù)處理網(wǎng)站內(nèi)容。
另一個需要采取的措施是為網(wǎng)頁抓取方式制定技術(shù)標(biāo)準(zhǔn)。網(wǎng)頁抓取環(huán)節(jié)的主要問題為如何對待抓取的URL 隊列進行順序排列,也稱為抓取策略。而網(wǎng)頁抓取策略一般來說有深度優(yōu)先抓取策略、最佳抓取策略以及廣度優(yōu)先抓取策略三種。技術(shù)人員需要根據(jù)搜索引擎的實際情況,對三種抓取策略進行選擇與采用。
例如,對廣度優(yōu)先抓取策略來說,其主要針對主題爬蟲來進行應(yīng)用。具體操作過程為首先對該層次進行全面搜索,接著對下一層次進行搜索,逐層順序搜索,特別是對于初始URL 距離較近的網(wǎng)頁,采用此種策略來進行網(wǎng)頁抓取較好,從而來幫助網(wǎng)絡(luò)爬蟲抓取所需網(wǎng)頁信息。而對最佳抓取策略來說,操作過程為計算URL 隊列與將要抓取網(wǎng)頁內(nèi)容的相似度,找出與URL 隊列相似度較高的網(wǎng)頁,對其進行搜索抓取,此種方式可以使網(wǎng)頁抓取策略更加科學(xué)合理。深度抓取策略則是以深度作為搜索主體,通過超鏈接的方式對網(wǎng)頁內(nèi)容進行深度優(yōu)先搜索。以上三種網(wǎng)頁抓取策略各有優(yōu)勢,技術(shù)人員需要根據(jù)實際情況選擇合適的抓取策略,并制定技術(shù)標(biāo)準(zhǔn),使其發(fā)揮應(yīng)有的作用。
除了充分發(fā)揮python 語言的優(yōu)勢以及制定技術(shù)標(biāo)準(zhǔn)之外,對各個控制模塊進行優(yōu)先管理也是促進網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)用的重要措施。整個系統(tǒng)模塊分為爬蟲主控模塊、網(wǎng)頁下載模塊、URL調(diào)度模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)顯示模塊以及網(wǎng)頁解析模塊。技術(shù)人員需要對控制模塊進行優(yōu)先管理,完善各個模塊的使用環(huán)節(jié),為網(wǎng)絡(luò)爬蟲提供科學(xué)完整的URL 隊列、數(shù)據(jù)獲取、數(shù)據(jù)處理以及儲存等環(huán)節(jié)[2]。
在網(wǎng)絡(luò)爬蟲的系統(tǒng)框架中,主過程由控制器,解析器,資源庫三部分組成。控制器的主要工作是負責(zé)給多線程中的各個爬蟲線程分配工作任務(wù)。解析器的主要工作是下載網(wǎng)頁,進行頁面的處理,主要是將一些JS 腳本標(biāo)簽、CSS 代碼內(nèi)容、空格字符、HTML 標(biāo)簽等內(nèi)容處理掉,爬蟲的基本工作由解析器完成。資源庫是用來存放下載到的網(wǎng)頁資源,一般都采用大型的數(shù)據(jù)庫存儲,如Oracle 數(shù)據(jù)庫,并對其建立索引。
目前開發(fā)網(wǎng)絡(luò)爬蟲應(yīng)該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector 還有其他的。爬蟲目前基本可以分3類:(1)分 布 式 爬 蟲:Nutch;(2)JAVA 爬 蟲:Crawler4j、WebMagic、WebCollector;(3)非JAVA 爬蟲:scrapy(基于Python 語言開發(fā))。
python 語言在網(wǎng)絡(luò)爬蟲技術(shù)的應(yīng)用方面有著重要的作用,特別是在大數(shù)據(jù)的背景下,利用python 語言來應(yīng)用網(wǎng)絡(luò)爬蟲技術(shù)可以完善搜索引擎以及網(wǎng)頁抓取等環(huán)節(jié),從而使其為大數(shù)據(jù)的發(fā)展貢獻力量。