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