2014年,一部名為《這就是搜索引擎:核心技術(shù)詳解》的書株茶,再次把“搜索”這一核心話題来涨,帶入公眾視野。姑且拋開此書一版再版所折射的隱性魅力不言启盛,正如書中所說蹦掐,基于其所充當(dāng)?shù)幕ヂ?lián)網(wǎng)入口地位技羔,及復(fù)雜的實(shí)現(xiàn)方式,“搜索引擎”都是目前互聯(lián)網(wǎng)產(chǎn)品中最具技術(shù)含量的產(chǎn)品卧抗,即便不是唯一藤滥,至少也是其中之一。
而我們今天所要探討的話題社裆,正是圍繞“爬蟲抓取策略”所展開的爬蟲相關(guān)簡介拙绊,并借此帶領(lǐng)我們身邊的“老司機(jī)”,一起發(fā)現(xiàn)那些有可能被忽略掉的理論泳秀。
1.? ? 一句話概括爬蟲
“傳輸海量網(wǎng)頁數(shù)據(jù)至本地标沪,并形成數(shù)以億計(jì)網(wǎng)頁之鏡像備份”的高效下載系統(tǒng)設(shè)計(jì)。
2.????通用爬蟲框架流程
a.?????精選部分網(wǎng)頁鏈接地址作為種子URL嗜傅,并將種子URL放入待抓取URL隊(duì)列金句;
b.????從待抓取URL隊(duì)列依次讀取URL,并通過DNS將URL鏈接地址磺陡,轉(zhuǎn)換為網(wǎng)站服務(wù)器對(duì)應(yīng)的IP地址趴梢;
c.?????將網(wǎng)站IP地址和網(wǎng)頁相對(duì)路徑名稱交給網(wǎng)頁下載器漠畜,下載頁面內(nèi)容币他;
d.????將下載后的網(wǎng)頁所對(duì)應(yīng)的URL放入已抓取URL隊(duì)列,并將下載到本地的網(wǎng)頁內(nèi)容存儲(chǔ)到頁面庫憔狞,等待后續(xù)處理蝴悉;
e.?????從剛下載的網(wǎng)頁中抽取所有鏈接,并與已抓取URL隊(duì)列做對(duì)比瘾敢,檢出未被抓取的URL鏈接放入待抓取URL隊(duì)列拍冠,并重復(fù)新一輪抓取操作;
f.??????循環(huán)到網(wǎng)頁被盡數(shù)抓完簇抵,完整一輪完整抓取過程庆杜。
PS.動(dòng)態(tài)抓取中的爬蟲&與網(wǎng)頁的相對(duì)關(guān)系
已下載網(wǎng)頁集合:已被爬蟲從互聯(lián)網(wǎng)下載到本地進(jìn)行索引的網(wǎng)頁集合;
已過期網(wǎng)頁集合:所對(duì)應(yīng)互聯(lián)網(wǎng)網(wǎng)頁已做動(dòng)態(tài)更新碟摆,卻未及爬蟲展開新一輪爬取的晃财,已被下載到本地的網(wǎng)頁集合;
待下載網(wǎng)頁集合:處于待抓取URL隊(duì)列中的網(wǎng)頁集合典蜕;
可知網(wǎng)頁集合:存在于已抓取網(wǎng)頁或待抓取網(wǎng)頁中的断盛,未及爬取,但遲早會(huì)被爬蟲通過鏈接關(guān)系發(fā)現(xiàn)愉舔,并進(jìn)行抓取和索引的網(wǎng)頁集合钢猛;
不可知網(wǎng)頁集合:爬蟲無法抓取到的網(wǎng)頁集合;
3.? ? 三種爬蟲類型
a.?????批量型爬蟲
有著明確的抓取范圍和目標(biāo)轩缤,達(dá)到設(shè)定目標(biāo)(特定數(shù)量網(wǎng)頁或特定長度時(shí)間)即停止抓取的爬蟲類型命迈;
b.????增量型爬蟲
持續(xù)不斷地抓取網(wǎng)頁贩绕,并對(duì)已抓取網(wǎng)頁進(jìn)行定期更新的爬蟲類型;
c.?????垂直型爬蟲
只抓取特定行業(yè)網(wǎng)頁或主題內(nèi)容的爬蟲類型
4.????優(yōu)秀爬蟲需滿足的條件
a.?????高性能
單位時(shí)間盡可能抓取更多的網(wǎng)頁壶愤;
b.????可擴(kuò)展
可通過增加抓取服務(wù)器和爬蟲數(shù)量的方式丧叽,較為容易地解決縮短抓取周期的問題;
c.?????健壯性
能正確應(yīng)對(duì)諸如網(wǎng)頁HTML編碼不規(guī)范公你、服務(wù)器突然死機(jī)踊淳、爬蟲陷阱等異常情況,避免工作中斷陕靠,或中斷后能輕易恢復(fù)之前抓取到的數(shù)據(jù)迂尝;
d.????友好性
保護(hù)網(wǎng)站的部分私密性(避抓爬蟲禁抓協(xié)議下的網(wǎng)頁,避抓網(wǎng)頁禁抓標(biāo)記下的部分內(nèi)容)剪芥,并減少被抓取網(wǎng)站的網(wǎng)絡(luò)負(fù)載垄开;
5.? ? 爬蟲抓取策略
爬蟲抓取的總原則:優(yōu)先選擇重要網(wǎng)頁進(jìn)行抓取(PageRank是評(píng)價(jià)網(wǎng)頁重要性的常用標(biāo)準(zhǔn))税肪,確定待抓取URL隊(duì)列則是技術(shù)關(guān)鍵溉躲。
根據(jù)URL優(yōu)先排序的不同確定方法,劃分4種爬蟲抓取策略如下:
a.?????寬度優(yōu)先遍歷策略
含義: 一種通過“將新下載網(wǎng)頁包含的鏈接益兄,直接機(jī)械地追加到待抓取URL隊(duì)列末尾”的方式锻梳,實(shí)現(xiàn)合理安排URL下載順序的抓取策略。
特點(diǎn):簡單直觀净捅、歷史悠久疑枯、功能強(qiáng)悍,對(duì)比各種抓取策略的基準(zhǔn)策略蛔六。
優(yōu)缺點(diǎn):可基本保證按網(wǎng)頁重要性排序待抓取URL列表荆永,效果很好。
b.????非完全PageRank策略
PageRank:一種著名的国章,能確定網(wǎng)頁重要性的具钥,全局性的,鏈接分析算法液兽。
非完全PageRank策略: 一種“在不完整的互聯(lián)網(wǎng)頁面子集中骂删,計(jì)算PageRank,形成待抓取URL隊(duì)列”的爬蟲抓取策略抵碟,即連帶已下載網(wǎng)頁和待抓取URL隊(duì)列中的URL一起桃漾,組成網(wǎng)頁集合,并在所組成的網(wǎng)頁集合中進(jìn)行PageRank計(jì)算拟逮,并按照PageRank得分從高到低的順序撬统,將待抓取URL隊(duì)列重排,形成新的待抓取URL隊(duì)列敦迄,這樣一種抓取策略恋追。
l? 非完全PageRank凭迹,常采用“每當(dāng)新下載網(wǎng)頁攢夠K個(gè),將所有下載頁面重新進(jìn)行一次非完全PageRank計(jì)算”的方法進(jìn)行苦囱;
l? 在新一輪非完全PageRank計(jì)算未展開前嗅绸,賦予新抽取出來的還沒有PageRank值的網(wǎng)頁以臨時(shí)PageRank值,以跟待抓取URL列表形成大小比較撕彤,考慮到新抽取網(wǎng)頁需要優(yōu)先抓取的需要鱼鸠。
優(yōu)缺點(diǎn):爭論不一
c.? ? OCIP策略
含義:OCIP,在線頁面重要性計(jì)算羹铅。通過“算法開始前蚀狰,給予所有互聯(lián)網(wǎng)頁面相同現(xiàn)金(cash), 每下載一個(gè)頁面,便將其對(duì)應(yīng)的現(xiàn)金均分給頁內(nèi)所包含的頁面鏈接职员,以清空已下載頁面的現(xiàn)金值麻蹋。待抓取URL隊(duì)列中的網(wǎng)頁,均按照現(xiàn)金由多到少排序焊切,并實(shí)現(xiàn)順次抓取”
效果:一種較好的重要性衡量策略扮授,效果優(yōu)于寬度優(yōu)先遍歷策略。
優(yōu)缺點(diǎn):不需迭代专肪,計(jì)算速度快刹勃,適于實(shí)時(shí)計(jì)算。
d.????大站優(yōu)先策略
含義:優(yōu)先下載大型網(wǎng)站牵祟,即以網(wǎng)站為單位來衡量網(wǎng)頁重要性深夯,對(duì)于待抓取URL隊(duì)列中的網(wǎng)頁抖格,根據(jù)所屬網(wǎng)站歸類诺苹,如果哪個(gè)網(wǎng)站等待下載的頁面最多,則優(yōu)先下載這些鏈接雹拄。