本文約?2300?字酗捌,建議閱讀時間為?5?分鐘,理解為主。此處草姻,強烈建議查看上一篇《搜索引擎之技術(shù)架構(gòu)》。
上一篇《搜索引擎之技術(shù)架構(gòu)》稍刀,我們講述了搜索引擎的概念撩独、種類,和技術(shù)架構(gòu)账月,我們用一張圖回顧一下综膀。
本章,我們重點來學習一下圖上左上角的爬蟲局齿,主要包括五個方面的內(nèi)容:
爬蟲的概念
爬蟲的分類
爬蟲的抓取策略
爬蟲的更新策略
爬蟲的部署特點
1 爬蟲的概念
爬蟲剧劝,又稱蜘蛛、Spider抓歼、機器人拢锹、Bot等(以下統(tǒng)一稱為“爬蟲”),是搜索引擎用來抓取互聯(lián)網(wǎng)網(wǎng)頁的軟件程序萄喳,處于整個搜索引擎業(yè)務和技術(shù)的最上游模塊卒稳。
只有爬蟲抓取的網(wǎng)頁才會在參與之后的內(nèi)容和鏈接的處理,但不會爬蟲抓取的網(wǎng)頁也有可能出現(xiàn)在搜索引擎結(jié)果之中他巨,比如充坑,淘寶網(wǎng)禁止百度的爬蟲抓取其內(nèi)容,但域名層級也會參與最終的網(wǎng)頁排序染突,最終展示給用戶捻爷。
2 爬蟲的種類
按照抓取對象的側(cè)重點,可以將爬蟲分為以下幾類:
1)批量型爬蟲觉痛,BatchCrawler
批量型爬蟲有較明確的抓取范圍及抓取目標役衡,目標可能是一段時間,也可能是一批網(wǎng)頁薪棒,一旦完成要求的抓取要求手蝎,則爬蟲就會停止抓取進程,算是完成了此階段批量的抓取任務俐芯。
2)增量型爬蟲棵介,IncrementalCrawler
不同于批量型爬蟲,增量型爬蟲會持續(xù)不斷地抓取網(wǎng)頁吧史,并且要對新抓到的網(wǎng)頁進行更新邮辽。又稱“通用爬蟲”,在搜索業(yè)務內(nèi)贸营,如百度吨述、Google采用的都是增量型爬蟲。
3)垂直型爬蟲钞脂,F(xiàn)ocusCrawler
垂直型爬蟲關(guān)注在某一個固定的專題內(nèi)容或者固定的行業(yè)網(wǎng)頁揣云。在互聯(lián)網(wǎng)行業(yè),存在千萬種行業(yè)分類冰啃,垂直型爬蟲要明確爬蟲哪方面的內(nèi)容邓夕,進而對此行業(yè)內(nèi)進行抓取。一般垂直型搜索引擎阎毅,如攜程焚刚,就會重點抓取出行方面的數(shù)據(jù),不會考慮到食品類別的網(wǎng)頁扇调。
以上三種爬蟲矿咕,技術(shù)難度最大最復雜的當屬增量型爬蟲,也是Google、百度等一般搜索引擎采用的爬蟲類型痴腌。
與批量型相比雌团,增量型爬蟲需要對能發(fā)現(xiàn)的任務網(wǎng)頁進行抓取,而不是關(guān)注在某一范圍或目標上士聪。與垂直型相比锦援,增量型爬蟲需要對全網(wǎng)內(nèi)容進行抓取,而不僅只抓取某一專題內(nèi)容剥悟。
此外灵寺,增量型爬蟲還要考慮到所有抓取下來內(nèi)容的更新,一遍遍地抓取区岗,更新內(nèi)容略板,具體策略見下文。
3 爬蟲的抓取策略
互聯(lián)網(wǎng)上慈缔,所有的網(wǎng)頁可以分為四種:
已下載網(wǎng)頁叮称,即已被爬蟲抓取下來的網(wǎng)頁;
待下載網(wǎng)頁藐鹤,即爬蟲將要抓取的網(wǎng)頁瓤檐;
可知網(wǎng)頁,即爬蟲知道存在但暫時不會去抓取的網(wǎng)頁娱节;
不可知網(wǎng)頁挠蛉,即暗網(wǎng)內(nèi)容,爬蟲都不知道存在的網(wǎng)頁肄满;
爬蟲則是對這四類頁面進行抓取的谴古,具體會根據(jù)不同的策略進行不同的抓取方式。
1)深度優(yōu)先策略稠歉,DepthFirst
深度優(yōu)先策略掰担,指的是爬蟲根據(jù)一個頁面順著抓取下去,即一條路走到黑怒炸。
如爬蟲從第1個頁面出發(fā)抓取带饱,沿著2-3-4-5,抓取結(jié)束之后横媚,再去抓取頁面6-7纠炮,再去抓取8-9-10月趟。
2)廣度優(yōu)先策略灯蝴,BreadthFirst
廣度優(yōu)先策略,指的是爬蟲在同一個等級上進行抓取孝宗,直到同等級頁面都被抓取完畢之后穷躁,再去抓取下一層級的頁面。
如上圖,廣度優(yōu)先策略的抓取順序為橫向的2-3-4问潭,然后是下一層級的5-6-7-8猿诸。
3)大站優(yōu)先策,LargerSite First
大站優(yōu)先策略就很簡單粗暴了狡忙,以站點為單位梳虽,表示這不同的重要性,對爬蟲來說灾茁,會優(yōu)先且更高頻率地去抓取大站窜觉。
以上,三種基本的爬蟲抓取策略北专,各有優(yōu)缺點禀挫。綜合而言,廣度優(yōu)先的策略不太理想拓颓,因為如果只在一個層級抓取语婴,永遠達到不了一些網(wǎng)頁,而深度優(yōu)先的策略驶睦,總能根據(jù)網(wǎng)頁之間的鏈接關(guān)系達到其他的網(wǎng)頁砰左。
在實際應用中,一般都是多種策略混合使用啥繁,比如從待抓取列表中菜职,優(yōu)先抓取大站數(shù)據(jù),在一定廣度范圍內(nèi)深度抓取等旗闽。
4 爬蟲的更新策略
在爬蟲完成第一遍抓取之后酬核,還要考慮到再次抓取的情況,因為網(wǎng)頁的內(nèi)容都是變化的适室,如不能及時抓取嫡意,那么用戶看到的可能還是很久之前的信息,就沒有意義了捣辆。
爬蟲一般會根據(jù)以下三個方面進行更新:
歷史更新頻率
用戶體驗
網(wǎng)頁類型
1)歷史更新頻率
搜索引擎爬蟲在爬蟲某些網(wǎng)頁時蔬螟,會判斷網(wǎng)頁的主體內(nèi)容是否發(fā)生了變化,如果發(fā)現(xiàn)網(wǎng)頁內(nèi)容經(jīng)常更新汽畴,就會增加抓取網(wǎng)頁的幾率旧巾。比如一些時事類的新聞版塊,分分鐘會更新出許多的內(nèi)容忍些,那么爬蟲也在以秒為單位進行實時的抓取鲁猩。但如果爬蟲嘗試抓取的時候,發(fā)現(xiàn)網(wǎng)頁內(nèi)容都是一成不變罢坝,則減少抓取頻率廓握,甚至不再對其抓取。在一個動態(tài)調(diào)整中,爬蟲會發(fā)現(xiàn)最合理的抓取規(guī)律隙券。
2)用戶體驗
互聯(lián)網(wǎng)上有海量的頁面和數(shù)據(jù)男应,但搜索引擎最關(guān)心的是用戶需要的那一小部分。在用戶輸入查詢詞之后經(jīng)常點擊的網(wǎng)頁娱仔,爬蟲則會認為其實用戶體驗良好的頁面沐飘,增加對其的抓取。
3)網(wǎng)頁類型
不同的網(wǎng)頁更新頻率是不同的牲迫,一般網(wǎng)頁分為首頁薪铜、分類頁、內(nèi)容頁恩溅。爬蟲抓取首頁隔箍、分類頁的幾率比內(nèi)容頁要高,因為爬蟲會認為內(nèi)容頁的內(nèi)容更新頻率小脚乡,而首頁和分類頁因為層級淺蜒滩,且更新頻率高,則會受到爬蟲青睞奶稠。
5 爬蟲的部署特點
搜索引擎為了滿足用戶的需求俯艰,需要大量的爬蟲對互聯(lián)網(wǎng)上的網(wǎng)頁進行抓取。對Google或者百度來說锌订,在全球范圍內(nèi)配置了很多數(shù)據(jù)中心竹握,比如Google在香港的數(shù)據(jù)中心,數(shù)據(jù)中心中配備了許多服務器辆飘,服務器上運行著許多爬蟲程序啦辐。可以理解為蜈项,有許多機房芹关,機房有許多臺電腦,電腦上運行著許多程序紧卒,對互聯(lián)網(wǎng)上的網(wǎng)頁進行著抓取侥衬。
圖為美國愛荷華州康瑟爾布拉夫斯的谷歌數(shù)據(jù)中心,類似于咱們超算中心跑芳,超酷的轴总!
綜上所述,搜索引擎之爬蟲為大家講解了爬蟲的概念博个、種類怀樟、抓取策略、更新策略坡倔、部署特點漂佩,讓大家對爬蟲有個宏觀方面的認識。
當然罪塔,若大家有自己網(wǎng)站的話投蝉,還可以采取不同的策略來對爬蟲進行限制,比如設(shè)置Robots.txt 文件禁止Bing搜索引擎的爬蟲抓取征堪,比如設(shè)置meta robot 信息進行單個頁面的限制等瘩缆。此方面的內(nèi)容不贅述,歡迎大家和我溝通針對于爬蟲可進行的網(wǎng)站優(yōu)化佃蚜。
此外庸娱,我會陸續(xù)給大家更新搜索引擎系列文章,展開講述不同階段不同步驟谐算,搜索引擎做了什么熟尉,為什么做,怎么做的洲脂。
公眾號:產(chǎn)品美景斤儿,只講產(chǎn)品和思考干貨的地方,歡迎隨時交流想法 ~