搜索引擎技术之网络爬虫
閱讀目錄
1. 網(wǎng)絡(luò)爬蟲(chóng)技術(shù)基本工作流程和基礎(chǔ)架構(gòu)
2. 網(wǎng)絡(luò)爬蟲(chóng)的抓取策略
3. 網(wǎng)絡(luò)爬蟲(chóng)更新策略
4. 分布式抓取系統(tǒng)結(jié)構(gòu)
5. 參考內(nèi)容
>>>>
隨著互聯(lián)網(wǎng)的大力發(fā)展,互聯(lián)網(wǎng)稱(chēng)為信息的主要載體,而如何在互聯(lián)網(wǎng)中搜集信息是互聯(lián)網(wǎng)領(lǐng)域面臨的一大挑戰(zhàn)。網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是什么?其實(shí)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)就是指的網(wǎng)絡(luò)數(shù)據(jù)的抓取,因?yàn)樵诰W(wǎng)絡(luò)中抓取數(shù)據(jù)是具有關(guān)聯(lián)性的抓取,它就像是一只蜘蛛一樣在互聯(lián)網(wǎng)中爬來(lái)爬去,所以我們很形象地將其稱(chēng)為是網(wǎng)絡(luò)爬蟲(chóng)技術(shù)。其中網(wǎng)絡(luò)爬蟲(chóng)也被稱(chēng)為是網(wǎng)絡(luò)機(jī)器人或者是網(wǎng)絡(luò)追逐者。
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是搜索引擎架構(gòu)中最為根本的數(shù)據(jù)技術(shù),通過(guò)網(wǎng)絡(luò)爬蟲(chóng)技術(shù),我們可以將互聯(lián)網(wǎng)中數(shù)以百億計(jì)的網(wǎng)頁(yè)信息保存到本地,形成一個(gè)鏡像文件,為整個(gè)搜索引擎提供數(shù)據(jù)支撐。
1. 網(wǎng)絡(luò)爬蟲(chóng)技術(shù)基本工作流程和基礎(chǔ)架構(gòu)
網(wǎng)絡(luò)爬蟲(chóng)獲取網(wǎng)頁(yè)信息的方式和我們平時(shí)使用瀏覽器訪(fǎng)問(wèn)網(wǎng)頁(yè)的工作原理是完全一樣的,都是根據(jù)HTTP協(xié)議來(lái)獲取,其流程主要包括如下步驟:
1)連接DNS域名服務(wù)器,將待抓取的URL進(jìn)行域名解析(URL------>IP);
2)根據(jù)HTTP協(xié)議,發(fā)送HTTP請(qǐng)求來(lái)獲取網(wǎng)頁(yè)內(nèi)容。
一個(gè)完整的網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)框架如下圖所示:
整個(gè)架構(gòu)共有如下幾個(gè)過(guò)程:
1)需求方提供需要抓取的種子URL列表,根據(jù)提供的URL列表和相應(yīng)的優(yōu)先級(jí),建立待抓取URL隊(duì)列(先來(lái)先抓);
2)根據(jù)待抓取URL隊(duì)列的排序進(jìn)行網(wǎng)頁(yè)抓取;
3)將獲取的網(wǎng)頁(yè)內(nèi)容和信息下載到本地的網(wǎng)頁(yè)庫(kù),并建立已抓取URL列表(用于去重和判斷抓取的進(jìn)程);
4)將已抓取的網(wǎng)頁(yè)放入到待抓取的URL隊(duì)列中,進(jìn)行循環(huán)抓取操作;
2. 網(wǎng)絡(luò)爬蟲(chóng)的抓取策略
在爬蟲(chóng)系統(tǒng)中,待抓取URL隊(duì)列是很重要的一部分。待抓取URL隊(duì)列中的URL以什么樣的順序排列也是一個(gè)很重要的問(wèn)題,因?yàn)檫@涉及到先抓取哪個(gè)頁(yè)面,后抓取哪個(gè)頁(yè)面的問(wèn)題。而決定這些URL排列順序的方法,叫做抓取策略。下面重點(diǎn)介紹幾種常見(jiàn)的抓取策略:
1)深度優(yōu)先遍歷策略
深度優(yōu)先遍歷策略很好理解,這跟我們有向圖中的深度優(yōu)先遍歷是一樣的,因?yàn)榫W(wǎng)絡(luò)本身就是一種圖模型嘛。深度優(yōu)先遍歷的思路是先從一個(gè)起始網(wǎng)頁(yè)開(kāi)始抓取,然后對(duì)根據(jù)鏈接一個(gè)一個(gè)的逐級(jí)進(jìn)行抓取,直到不能再深入抓取為止,返回上一級(jí)網(wǎng)頁(yè)繼續(xù)跟蹤鏈接。
一個(gè)有向圖深度優(yōu)先搜索的實(shí)例如下所示:
?
上圖左圖為一個(gè)有向圖示意圖,右圖為深度優(yōu)先遍歷的搜索過(guò)程示意圖。深度優(yōu)先遍歷的結(jié)果為:
2)廣度優(yōu)先搜索策略
廣度優(yōu)先搜索和深度優(yōu)先搜索的工作方式正好是相對(duì)的,其思想為:將新下載網(wǎng)頁(yè)中發(fā)現(xiàn)的鏈接直接插入待抓取URL隊(duì)列的末尾。也就是指網(wǎng)絡(luò)爬蟲(chóng)會(huì)先抓取起始網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè),然后再選擇其中的一個(gè)鏈接網(wǎng)頁(yè),繼續(xù)抓取在此網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè)。
上圖為上邊實(shí)例的有向圖的廣度優(yōu)先搜索流程圖,其遍歷的結(jié)果為:
?v1→v2 →v3 →v4→ v5→ v6→ v7 →v8
從樹(shù)的結(jié)構(gòu)上去看,圖的廣度優(yōu)先遍歷就是樹(shù)的層次遍歷。
3)反向鏈接搜索策略
反向鏈接數(shù)是指一個(gè)網(wǎng)頁(yè)被其他網(wǎng)頁(yè)鏈接指向的數(shù)量。反向鏈接數(shù)表示的是一個(gè)網(wǎng)頁(yè)的內(nèi)容受到其他人的推薦的程度。因此,很多時(shí)候搜索引擎的抓取系統(tǒng)會(huì)使用這個(gè)指標(biāo)來(lái)評(píng)價(jià)網(wǎng)頁(yè)的重要程度,從而決定不同網(wǎng)頁(yè)的抓取先后順序。
??? 在真實(shí)的網(wǎng)絡(luò)環(huán)境中,由于廣告鏈接、作弊鏈接的存在,反向鏈接數(shù)不能完全等他我那個(gè)也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數(shù)。
4)大站優(yōu)先策略
對(duì)于待抓取URL隊(duì)列中的所有網(wǎng)頁(yè),根據(jù)所屬的網(wǎng)站進(jìn)行分類(lèi)。對(duì)于待下載頁(yè)面數(shù)多的網(wǎng)站,優(yōu)先下載。這個(gè)策略也因此叫做大站優(yōu)先策略。
5)其他搜索策略
一些比較常用的爬蟲(chóng)搜索側(cè)率還包括Partial PageRank搜索策略(根據(jù)PageRank分值確定下一個(gè)抓取的URL)、OPIC搜索策略(也是一種重要性排序)。最后必須要指明的一點(diǎn)是,我們可以根據(jù)自己的需求為網(wǎng)頁(yè)的抓取間隔時(shí)間進(jìn)行設(shè)定,這樣我們就可以確保我們基本的一些大站或者活躍的站點(diǎn)內(nèi)容不會(huì)被漏抓。
3. 網(wǎng)絡(luò)爬蟲(chóng)更新策略
互聯(lián)網(wǎng)是實(shí)時(shí)變化的,具有很強(qiáng)的動(dòng)態(tài)性。網(wǎng)頁(yè)更新策略主要是決定何時(shí)更新之前已經(jīng)下載過(guò)的頁(yè)面。常見(jiàn)的更新策略又以下三種:
1)歷史參考策略
顧名思義,根據(jù)頁(yè)面以往的歷史更新數(shù)據(jù),預(yù)測(cè)該頁(yè)面未來(lái)何時(shí)會(huì)發(fā)生變化。一般來(lái)說(shuō),是通過(guò)泊松過(guò)程進(jìn)行建模進(jìn)行預(yù)測(cè)。
2)用戶(hù)體驗(yàn)策略
盡管搜索引擎針對(duì)于某個(gè)查詢(xún)條件能夠返回?cái)?shù)量巨大的結(jié)果,但是用戶(hù)往往只關(guān)注前幾頁(yè)結(jié)果。因此,抓取系統(tǒng)可以?xún)?yōu)先更新那些現(xiàn)實(shí)在查詢(xún)結(jié)果前幾頁(yè)中的網(wǎng)頁(yè),而后再更新那些后面的網(wǎng)頁(yè)。這種更新策略也是需要用到歷史信息的。用戶(hù)體驗(yàn)策略保留網(wǎng)頁(yè)的多個(gè)歷史版本,并且根據(jù)過(guò)去每次內(nèi)容變化對(duì)搜索質(zhì)量的影響,得出一個(gè)平均值,用這個(gè)值作為決定何時(shí)重新抓取的依據(jù)。
3)聚類(lèi)抽樣策略
前面提到的兩種更新策略都有一個(gè)前提:需要網(wǎng)頁(yè)的歷史信息。這樣就存在兩個(gè)問(wèn)題:第一,系統(tǒng)要是為每個(gè)系統(tǒng)保存多個(gè)版本的歷史信息,無(wú)疑增加了很多的系統(tǒng)負(fù)擔(dān);第二,要是新的網(wǎng)頁(yè)完全沒(méi)有歷史信息,就無(wú)法確定更新策略。
這種策略認(rèn)為,網(wǎng)頁(yè)具有很多屬性,類(lèi)似屬性的網(wǎng)頁(yè),可以認(rèn)為其更新頻率也是類(lèi)似的。要計(jì)算某一個(gè)類(lèi)別網(wǎng)頁(yè)的更新頻率,只需要對(duì)這一類(lèi)網(wǎng)頁(yè)抽樣,以他們的更新周期作為整個(gè)類(lèi)別的更新周期。基本思路如圖:
4. 分布式抓取系統(tǒng)結(jié)構(gòu)
一般來(lái)說(shuō),抓取系統(tǒng)需要面對(duì)的是整個(gè)互聯(lián)網(wǎng)上數(shù)以?xún)|計(jì)的網(wǎng)頁(yè)。單個(gè)抓取程序不可能完成這樣的任務(wù)。往往需要多個(gè)抓取程序一起來(lái)處理。一般來(lái)說(shuō)抓取系統(tǒng)往往是一個(gè)分布式的三層結(jié)構(gòu)。如圖所示:
最下一層是分布在不同地理位置的數(shù)據(jù)中心,在每個(gè)數(shù)據(jù)中心里有若干臺(tái)抓取服務(wù)器,而每臺(tái)抓取服務(wù)器上可能部署了若干套爬蟲(chóng)程序。這就構(gòu)成了一個(gè)基本的分布式抓取系統(tǒng)。
對(duì)于一個(gè)數(shù)據(jù)中心內(nèi)的不同抓去服務(wù)器,協(xié)同工作的方式有幾種:
1)主從式(Master-Slave)
主從式基本結(jié)構(gòu)如圖所示:
對(duì)于主從式而言,有一臺(tái)專(zhuān)門(mén)的Master服務(wù)器來(lái)維護(hù)待抓取URL隊(duì)列,它負(fù)責(zé)每次將URL分發(fā)到不同的Slave服務(wù)器,而Slave服務(wù)器則負(fù)責(zé)實(shí)際的網(wǎng)頁(yè)下載工作。Master服務(wù)器除了維護(hù)待抓取URL隊(duì)列以及分發(fā)URL之外,還要負(fù)責(zé)調(diào)解各個(gè)Slave服務(wù)器的負(fù)載情況。以免某些Slave服務(wù)器過(guò)于清閑或者勞累。
這種模式下,Master往往容易成為系統(tǒng)瓶頸。
2)對(duì)等式(Peer to Peer)
對(duì)等式的基本結(jié)構(gòu)如圖所示:
在這種模式下,所有的抓取服務(wù)器在分工上沒(méi)有不同。每一臺(tái)抓取服務(wù)器都可以從待抓取在URL隊(duì)列中獲取URL,然后對(duì)該URL的主域名的hash值H,然后計(jì)算H mod m(其中m是服務(wù)器的數(shù)量,以上圖為例,m為3),計(jì)算得到的數(shù)就是處理該URL的主機(jī)編號(hào)。
舉例:假設(shè)對(duì)于URL www.baidu.com,計(jì)算器hash值H=8,m=3,則H mod m=2,因此由編號(hào)為2的服務(wù)器進(jìn)行該鏈接的抓取。假設(shè)這時(shí)候是0號(hào)服務(wù)器拿到這個(gè)URL,那么它將該URL轉(zhuǎn)給服務(wù)器2,由服務(wù)器2進(jìn)行抓取。
這種模式有一個(gè)問(wèn)題,當(dāng)有一臺(tái)服務(wù)器死機(jī)或者添加新的服務(wù)器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說(shuō),這種方式的擴(kuò)展性不佳。針對(duì)這種情況,又有一種改進(jìn)方案被提出來(lái)。這種改進(jìn)的方案是一致性哈希法來(lái)確定服務(wù)器分工。其基本結(jié)構(gòu)如圖所示:
一致性哈希將URL的主域名進(jìn)行哈希運(yùn)算,映射為一個(gè)范圍在0-232之間的某個(gè)數(shù)。而將這個(gè)范圍平均的分配給m臺(tái)服務(wù)器,根據(jù)URL主域名哈希運(yùn)算的值所處的范圍判斷是哪臺(tái)服務(wù)器來(lái)進(jìn)行抓取。
如果某一臺(tái)服務(wù)器出現(xiàn)問(wèn)題,那么本該由該服務(wù)器負(fù)責(zé)的網(wǎng)頁(yè)則按照順時(shí)針順延,由下一臺(tái)服務(wù)器進(jìn)行抓取。這樣的話(huà),及時(shí)某臺(tái)服務(wù)器出現(xiàn)問(wèn)題,也不會(huì)影響其他的工作。
5. 參考內(nèi)容
[1] wawlian:?網(wǎng)絡(luò)爬蟲(chóng)基本原理(一)(二);
[2] guisu:?搜索引擎-網(wǎng)絡(luò)爬蟲(chóng);
[3]?《這就是搜索引擎:核心技術(shù)詳解》。
作者:Poll的筆記?
來(lái)源:http://www.cnblogs.com/maybe2030/p/4778134.html
—THE END—
文章推薦
?數(shù)學(xué) ?| ? 小學(xué)生如何詮釋數(shù)學(xué)的線(xiàn)條美?
?數(shù)學(xué) | ?從追女孩到找導(dǎo)彈,這就是數(shù)學(xué)的魅力!!
?字節(jié)員工炸鍋,薪資普降17%!
?京東 | AI人才聯(lián)合培養(yǎng)計(jì)劃
?世界天才大匯總
?90后「V神」封神之路:4歲學(xué)編程,19歲創(chuàng)辦以太坊,4年十億身家!
總結(jié)
以上是生活随笔為你收集整理的搜索引擎技术之网络爬虫的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 历史上知名的反转现场
- 下一篇: id门禁卡复制到手机_手机NFC有哪些功