霍柄良 武警后勤學(xué)院基礎(chǔ)部
在現(xiàn)階段大數(shù)據(jù)的時代中,想要實現(xiàn)對數(shù)據(jù)的獲取和分析,要先具備足夠的數(shù)據(jù)源,網(wǎng)絡(luò)爬蟲技術(shù)就為其數(shù)據(jù)獲取提供了良好的條件,且還能夠?qū)崿F(xiàn)對數(shù)據(jù)源的目的性采集。在網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)用中,Python 腳本語言的使用十分廣泛,此腳本語言具有著顯著的優(yōu)勢,也提高了網(wǎng)絡(luò)爬蟲技術(shù)運用的水平,而基于Python 的網(wǎng)絡(luò)爬蟲技術(shù)如何實現(xiàn)就是本文主要研究的內(nèi)容。
所謂網(wǎng)絡(luò)爬蟲,又被稱作網(wǎng)頁蜘蛛和網(wǎng)絡(luò)的機器人,主要是根據(jù)一定規(guī)則自動進行網(wǎng)絡(luò)信息抓取的一種程序或腳本。這種網(wǎng)絡(luò)爬蟲常被用在互聯(lián)網(wǎng)的搜索引擎和其它類似的網(wǎng)站中,對這些網(wǎng)站內(nèi)的內(nèi)容進行獲取、更新和檢索。往往通過網(wǎng)絡(luò)爬蟲能夠自動采集所訪問頁面的內(nèi)容,后讓搜索的引擎實施進一步的處理,如對下載頁面的分檢、整理等,從而使用戶能夠迅速進行所需信息的檢索。
Python 是一種網(wǎng)絡(luò)爬蟲腳本語言類型,其在對網(wǎng)絡(luò)爬蟲編寫中具有著顯著的優(yōu)點。首先,Python 的語言十分簡潔,使用起來十分簡單、易學(xué),通過Python 進行編寫就像使用英語進行寫作一樣;然后,Python 在使用中十分方便,并不需要IDE,而僅僅通過sublime text 就能夠?qū)Υ蟛糠值闹行?yīng)用進行開發(fā);同時,Python 爬蟲的框架功能十分強大,其框架能夠?qū)W(wǎng)絡(luò)數(shù)據(jù)進行爬取,還能對結(jié)構(gòu)性的數(shù)據(jù)進行提取,經(jīng)常用在數(shù)據(jù)的挖掘、歷史數(shù)據(jù)的存儲和信息的處理等程序內(nèi);另外,Python 網(wǎng)絡(luò)的支持庫和html 的解析器功能十分強大,借助網(wǎng)絡(luò)的支持庫通過較少代碼的編寫,就能夠進行網(wǎng)頁的下載,且通過網(wǎng)頁的解析庫就能夠?qū)W(wǎng)頁內(nèi)各標簽進行解析,和正則的表達式進行結(jié)合,十分便于進行網(wǎng)頁內(nèi)容的抓取。
此模塊作用主要是對URL 進行管理,包括那些已抓取和未被抓取URL 的集合,且能夠?qū)χ貜?fù)和循環(huán)等抓取問題進行有效的預(yù)防。Python 在網(wǎng)址的管理中,主要有三種類型的途徑。首先,在內(nèi)存中進行存儲,且URL 的數(shù)據(jù)比較少,則通過Python 內(nèi)Set()的集合就能夠?qū)崿F(xiàn)管理,還能夠?qū)?shù)據(jù)重復(fù)進行消除和重復(fù)抓取問題的避免;然后,在關(guān)系的數(shù)據(jù)庫內(nèi)進行存儲,能夠達到永久性的存儲目的,先進行URL 表的建立,在此表內(nèi)包含兩個的字段,其中一個字段表示URL 的地址,而另一個的字段則體現(xiàn)是否抓取URL;另外,在緩存的數(shù)據(jù)庫內(nèi)進行儲存,若URL 數(shù)據(jù)比較多,也能夠借助Set()的集合實現(xiàn),對待爬以及已爬URL 的地址進行存取。
對于網(wǎng)頁的下載器來說,主要是把URL 所對應(yīng)網(wǎng)頁在本地內(nèi)進行下載,并把其存作字符串,便于后續(xù)對數(shù)據(jù)實施處理。在Python可以使用網(wǎng)頁的下載工具主要有兩種,一種是Python 內(nèi)自己所具有URLlib2的模塊,對那些簡單類型網(wǎng)絡(luò)爬蟲就能夠?qū)ζ渚W(wǎng)頁進行下載,對用戶的數(shù)據(jù)進行提交,并具有訪問代理和客戶的登錄等功能;另一種是第三方的工具包,如request 等,這種工具包的功能一般較為強大,但是一種第三方的軟件[2]。將百度當作例子,對其網(wǎng)絡(luò)爬蟲的代碼進行分析:
Import urllib2
Response.urllib2.urlopen(“http://www.baidu.com”)
Print response.read()
在此例子中,先進行urllib2 內(nèi)url.open()方法的調(diào)入,對百度URL 進行傳送,后對一個response 的對象進行返回,再進行response 對象read()方法的調(diào)入,最后返回獲取網(wǎng)頁的內(nèi)容并打印。
通過網(wǎng)頁的解析器,主要是對網(wǎng)頁內(nèi)進行想要數(shù)據(jù)的提取,一般所提取內(nèi)容主要有URL 的列表和目標的數(shù)據(jù)等部分。在Python 內(nèi)網(wǎng)頁的解析器存在兩種類型,一種是借助正則的表達式,其把網(wǎng)頁作為字符串進行處理,此種類型一般用在簡單網(wǎng)頁內(nèi),若網(wǎng)頁比較復(fù)雜就不適合使用此類型;另一種是借助網(wǎng)頁DOM 的結(jié)構(gòu),而DOM 呈現(xiàn)出樹形標簽的結(jié)構(gòu),網(wǎng)頁的解析器會吧HTML 的文檔作為DOM樹并對其上下級的結(jié)構(gòu)進行遍歷,后進行有用信息的提取,同時這種方法通過樹形的結(jié)構(gòu)能夠?qū)W(wǎng)頁內(nèi)具體的信息節(jié)點和屬性等實施定位。
綜上所述,Python 是網(wǎng)絡(luò)爬蟲的技術(shù)實現(xiàn)中重要的語言腳本類型,其具有著顯著的特點和優(yōu)勢,因此這就需要認識到Python 的優(yōu)越性,在做好網(wǎng)絡(luò)爬蟲的良好引入同時,還要對此技術(shù)進行不斷研究和探索,從而更好發(fā)揮其在網(wǎng)絡(luò)爬蟲中的效果。