劉文輝 李麗
摘 要:面對數(shù)據(jù)大爆炸,人們很難獲取有用的信息。網(wǎng)絡(luò)爬蟲技術(shù)成為了搜索引擎中最為重要的部分,能夠有效的在海量數(shù)據(jù)中找到有價值的信息。本論文從不同方面基于python的網(wǎng)絡(luò)爬蟲技術(shù)的研究,希望為研究網(wǎng)絡(luò)爬蟲技術(shù)的專家和學(xué)者提供理論參考依據(jù)。
關(guān)鍵詞:python;網(wǎng)絡(luò)爬蟲技術(shù);分析
隨著我國社會化和移動互聯(lián)網(wǎng)的逐步發(fā)展,網(wǎng)絡(luò)上的數(shù)據(jù)呈爆炸式增長。數(shù)據(jù)大爆炸,導(dǎo)致了那些有需要的人們在網(wǎng)上找他們所需的信息愈發(fā)的困難,由此搜索引擎根據(jù)這種需求產(chǎn)生了。這個時候我們需要搜索引擎去解決的困難,不僅僅是幫助人們從大量的數(shù)據(jù)里找到答案,還要在大量的答案里面找到人們最需要的結(jié)果,迅速快捷的找到精準(zhǔn)答案比找到很多無用答案更被人們所需要。搜素引擎要做什么呢?搜索引擎需要從海量數(shù)據(jù)中提取價值,即為數(shù)據(jù)挖掘。從本質(zhì)上看,搜索引擎是一個典型的大數(shù)據(jù)應(yīng)用。網(wǎng)絡(luò)爬蟲技術(shù)在搜索引擎中,是很關(guān)鍵也很基礎(chǔ)的構(gòu)件。搜索引擎聚集了網(wǎng)絡(luò)中成千上萬的信息網(wǎng)頁,并為網(wǎng)頁中逐個詞建立索引。在人們設(shè)立搜索引擎的過程中,采集信息網(wǎng)頁是一個很重要的部分。爬蟲程序就是用來搜集網(wǎng)頁的程序。網(wǎng)絡(luò)爬蟲是搜索引擎中信息采集的部分,整個搜索引擎索引網(wǎng)頁的質(zhì)量、數(shù)量和更新周期,都會受網(wǎng)絡(luò)爬蟲技術(shù)性能的影響。因此對于網(wǎng)絡(luò)爬蟲的研究具有深遠(yuǎn)的意義。
1 網(wǎng)絡(luò)爬蟲以及網(wǎng)絡(luò)爬行
網(wǎng)絡(luò)爬蟲(Web Crawler)是搜索引擎的最基礎(chǔ)部分,主要是一個能夠下載網(wǎng)頁的計算機(jī)程序或者腳本,又被稱為網(wǎng)絡(luò)蜘蛛(Web Spider)。一般而言,網(wǎng)絡(luò)爬蟲從種子集的URL 集合開始運(yùn)行,先將 URL 放入一個有序隊列中,然后按照一定的順序?qū)?URL 取出,然后下載所對應(yīng)的頁面。經(jīng)過對網(wǎng)絡(luò)頁面的分析,獲取新的 URL,并將其放入有序隊列中,如此反復(fù),直到隊列為空或者是滿足停止爬行的條件,從而遍歷整個網(wǎng)絡(luò)。這便是網(wǎng)絡(luò)爬蟲的運(yùn)行過程,稱為網(wǎng)絡(luò)爬行(Web Crawling)。
2 網(wǎng)絡(luò)爬蟲的分類
網(wǎng)絡(luò)爬蟲的分類比較多,根據(jù)其結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)主要可以分為通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò)爬蟲以及深層網(wǎng)絡(luò)爬蟲四種,實(shí)際應(yīng)用中的網(wǎng)絡(luò)爬蟲一般是多種及技術(shù)結(jié)合實(shí)現(xiàn)的。
2.1通用網(wǎng)絡(luò)爬蟲
一般情況下,通用網(wǎng)絡(luò)爬蟲對爬行頁面的順序要求不高,大多采用并行的工作方式,刷新頁面需要的時間比較長。因此,通用網(wǎng)絡(luò)爬蟲往往會采用一定的爬行策略來縮短爬行時間,比較常用的有深度優(yōu)先和廣度優(yōu)先兩種。深度優(yōu)先是指按照深度由低到高訪問鏈接,直到無法再深入;廣度優(yōu)先是指首先爬行網(wǎng)頁的淺目錄內(nèi)容,然后爬行深目錄內(nèi)容。比較常見的通用網(wǎng)絡(luò)爬蟲有 Mercator 和Google Crawler。Google Crawler 是一個分布式的爬蟲,它利用異步 I/O 來實(shí)現(xiàn)并行化,并且擁有獨(dú)立的進(jìn)程來維護(hù) URL 隊列,Google Crawler 還使用了PageRank 等多種算法來提高系統(tǒng)的性能。
2.2聚焦網(wǎng)絡(luò)爬蟲
聚焦網(wǎng)絡(luò)爬蟲能夠選擇性的爬行與預(yù)設(shè)主題相關(guān)的頁面。聚焦爬蟲的爬行范圍小,能夠有效的節(jié)省網(wǎng)絡(luò)資源,并且頁面更新比較快。聚焦網(wǎng)絡(luò)爬蟲的爬行策略主要由頁面的內(nèi)容評價以及連接的結(jié)構(gòu)評價決定。在基于內(nèi)容評價的爬行策略中,主要采用 Fish Search 算法來評價查詢頁面與查詢主題的相關(guān)度;在基于連接結(jié)構(gòu)評價的爬行策略中,主要 PageRank 算法來評價鏈接的重要性,具體就是優(yōu)先訪問 PageRank 值最大的頁面;在基于增強(qiáng)學(xué)習(xí)的爬行策略中,利用貝葉斯分類器對文本進(jìn)行分類,從而計算出不同鏈接的重要性,從而確定訪問順序。
2.3增量式網(wǎng)絡(luò)爬蟲
增量式網(wǎng)頁爬蟲主要是對已經(jīng)下載的網(wǎng)頁進(jìn)行更新,只爬行更新的網(wǎng)頁,從而保證刷新出的網(wǎng)頁是最新的。增量式網(wǎng)絡(luò)爬蟲一般只在頁面需要時才會開始爬行,不會重復(fù)下載沒有發(fā)生變化的網(wǎng)頁,因此在很大程度上減少了網(wǎng)絡(luò)資源的浪費(fèi),但是算法比較復(fù)雜且實(shí)現(xiàn)難度比較大。
3 基于Python的網(wǎng)絡(luò)爬蟲分析
3.1 Python語言的優(yōu)越性
(1)方便簡單,容易上手。Python幾乎能在所有的操作系統(tǒng)上運(yùn)行,很容易上手,初學(xué)者可以快速適應(yīng)。
(2)Python是一個廣泛使用的腳本語言,其自帶了urllib、url-lib2等爬蟲最基本的庫,可以抓取Url的內(nèi)容。
(3)Python擅長處理字節(jié)流的各種模式,具有很好的開發(fā)速度。
3.2 Python網(wǎng)絡(luò)爬蟲模塊
3.2.1 Url管理模塊
Url管理模塊的作用是管理Url,包括已經(jīng)被抓取的Url集合和還未被抓取的Url集合。Url管理模塊可以有效預(yù)防重復(fù)抓取循環(huán)抓取的問題。
Python中實(shí)現(xiàn)網(wǎng)址管理有三種途徑:
(1)存儲在內(nèi)存中,針對于Url數(shù)據(jù)較少的情況。在Python中用Set()集合加以實(shí)現(xiàn),Set()可以消除重復(fù)數(shù)據(jù),避免重復(fù)抓取的問題。
(2)存儲在關(guān)系數(shù)據(jù)庫,實(shí)現(xiàn)永久存儲。建立Url表,該表中有兩個字段,一個字段是Url地址,另一個字段用來表示Url是否被抓取。
(3)存儲在緩存數(shù)據(jù)庫redis中,針對于Url數(shù)據(jù)較多的情況下。也可以用Set()集合來實(shí)現(xiàn),來存取“待爬”的Url地址和“已爬”的Url地址。
3.2.2 網(wǎng)頁下載器
網(wǎng)頁下載器將Url對應(yīng)的網(wǎng)頁下載到本地,將其存儲為字符串,以便接下來對數(shù)據(jù)進(jìn)行處理。
Python支持的網(wǎng)頁下載工具有兩種:Python自身攜帶的urllib2模塊。urllib2針對于簡單的網(wǎng)絡(luò)爬蟲,能夠完成網(wǎng)頁下載,提交用戶數(shù)據(jù),代理訪問,客戶登錄等多種功能。
3.2.3 網(wǎng)頁解析器
網(wǎng)頁解析器用來從網(wǎng)頁中提取從最初想要的數(shù)據(jù)。實(shí)則上提取的是兩部分:(1)Url列表;(2)目標(biāo)數(shù)據(jù)。Python中的網(wǎng)頁解析器有兩種類型:
(1)利用正則表達(dá)式。正則表達(dá)式將網(wǎng)頁當(dāng)作字符串來處理,只適用于簡單的網(wǎng)頁。一般網(wǎng)頁較為復(fù)雜時,不采用此類方法。
(2)基于網(wǎng)頁的DOM結(jié)構(gòu)。DOM樹是一種樹形標(biāo)簽結(jié)構(gòu)。網(wǎng)頁解析器會將HTML文檔當(dāng)成DOM樹,對其進(jìn)行上下級結(jié)構(gòu)的遍歷來提取有用信息。使用樹形結(jié)構(gòu)可以對網(wǎng)頁中的具體信息來進(jìn)行定位,定位到具體的某個節(jié)點(diǎn)、屬性等。其中BeautifulSoup解析器功能強(qiáng)大,更為盛行。BeautifulSoup利用find_all()和find()方法來搜索節(jié)點(diǎn),find_all()可以查找所有符合查詢條件的標(biāo)簽節(jié)點(diǎn),并返回一個列表。find()方法查找符合查詢條件的第一個標(biāo)簽節(jié)點(diǎn)。用這兩種方法搜索節(jié)點(diǎn),提取有價值信息。
參考文獻(xiàn)
[1]大數(shù)據(jù)環(huán)境下的網(wǎng)絡(luò)爬蟲設(shè)計[J].郭麗蓉.山西電子技術(shù).2018(02)
[2]基于網(wǎng)絡(luò)爬蟲技術(shù)的時令旅游信息獲取[J].鄭鑫臻,吳韶波.物聯(lián)網(wǎng)技術(shù).2018(05)
[3]主題網(wǎng)絡(luò)爬蟲抓取策略的研究[J].劉清.科技廣場.2017(04)
[4]網(wǎng)絡(luò)爬蟲技術(shù)的研究與實(shí)現(xiàn)[J].繆治.中國新通信.2019(06)
[5]基于匿名網(wǎng)絡(luò)的網(wǎng)絡(luò)爬蟲設(shè)計與實(shí)現(xiàn)分析[J].劉煥欣.計算機(jī)產(chǎn)品與流通.2017(12)
[6]主題網(wǎng)絡(luò)爬蟲關(guān)鍵技術(shù)的應(yīng)用探討[J].楊凌云.電腦編程技巧與維護(hù).2018(11)
[7]網(wǎng)絡(luò)爬蟲技術(shù)在電力產(chǎn)業(yè)中的應(yīng)用[J].賀冠博,蘇宇琦,黃源.電子技術(shù)與軟件工程.2017(18)
[8]一種新的主題網(wǎng)絡(luò)爬蟲爬行策略[J].宋海洋,劉曉然,錢???計算機(jī)應(yīng)用與軟件.2011(11)