<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搜索引擎技術(shù)之網(wǎng)絡(luò)爬蟲

          共 3696字,需瀏覽 8分鐘

           ·

          2021-09-14 10:05

          數(shù)學(xué)算法俱樂部

          日期 : 2021年09月13日       

          正文共 :3217

          來源 :cnblogs

          閱讀目錄

          • 1. 網(wǎng)絡(luò)爬蟲技術(shù)基本工作流程和基礎(chǔ)架構(gòu)
          • 2. 網(wǎng)絡(luò)爬蟲的抓取策略
          • 3. 網(wǎng)絡(luò)爬蟲更新策略
          • 4. 分布式抓取系統(tǒng)結(jié)構(gòu)
          • 5. 參考內(nèi)容
            隨著互聯(lián)網(wǎng)的大力發(fā)展,互聯(lián)網(wǎng)稱為信息的主要載體,而如何在互聯(lián)網(wǎng)中搜集信息是互聯(lián)網(wǎng)領(lǐng)域面臨的一大挑戰(zhàn)。網(wǎng)絡(luò)爬蟲技術(shù)是什么?其實(shí)網(wǎng)絡(luò)爬蟲技術(shù)就是指的網(wǎng)絡(luò)數(shù)據(jù)的抓取,因?yàn)樵诰W(wǎng)絡(luò)中抓取數(shù)據(jù)是具有關(guān)聯(lián)性的抓取,它就像是一只蜘蛛一樣在互聯(lián)網(wǎng)中爬來爬去,所以我們很形象地將其稱為是網(wǎng)絡(luò)爬蟲技術(shù)。其中網(wǎng)絡(luò)爬蟲也被稱為是網(wǎng)絡(luò)機(jī)器人或者是網(wǎng)絡(luò)追逐者。
            網(wǎng)絡(luò)爬蟲技術(shù)是搜索引擎架構(gòu)中最為根本的數(shù)據(jù)技術(shù),通過網(wǎng)絡(luò)爬蟲技術(shù),我們可以將互聯(lián)網(wǎng)中數(shù)以百億計的網(wǎng)頁信息保存到本地,形成一個鏡像文件,為整個搜索引擎提供數(shù)據(jù)支撐。

          1. 網(wǎng)絡(luò)爬蟲技術(shù)基本工作流程和基礎(chǔ)架構(gòu)

            網(wǎng)絡(luò)爬蟲獲取網(wǎng)頁信息的方式和我們平時使用瀏覽器訪問網(wǎng)頁的工作原理是完全一樣的,都是根據(jù)HTTP協(xié)議來獲取,其流程主要包括如下步驟:
            1)連接DNS域名服務(wù)器,將待抓取的URL進(jìn)行域名解析(URL------>IP);
            2)根據(jù)HTTP協(xié)議,發(fā)送HTTP請求來獲取網(wǎng)頁內(nèi)容。
            一個完整的網(wǎng)絡(luò)爬蟲基礎(chǔ)框架如下圖所示:
            整個架構(gòu)共有如下幾個過程:
            1)需求方提供需要抓取的種子URL列表,根據(jù)提供的URL列表和相應(yīng)的優(yōu)先級,建立待抓取URL隊(duì)列(先來先抓);
            2)根據(jù)待抓取URL隊(duì)列的排序進(jìn)行網(wǎng)頁抓取;
            3)將獲取的網(wǎng)頁內(nèi)容和信息下載到本地的網(wǎng)頁庫,并建立已抓取URL列表(用于去重和判斷抓取的進(jìn)程);
            4)將已抓取的網(wǎng)頁放入到待抓取的URL隊(duì)列中,進(jìn)行循環(huán)抓取操作;

          2. 網(wǎng)絡(luò)爬蟲的抓取策略

            在爬蟲系統(tǒng)中,待抓取URL隊(duì)列是很重要的一部分。待抓取URL隊(duì)列中的URL以什么樣的順序排列也是一個很重要的問題,因?yàn)檫@涉及到先抓取哪個頁面,后抓取哪個頁面的問題。而決定這些URL排列順序的方法,叫做抓取策略。下面重點(diǎn)介紹幾種常見的抓取策略:
            1)深度優(yōu)先遍歷策略
            深度優(yōu)先遍歷策略很好理解,這跟我們有向圖中的深度優(yōu)先遍歷是一樣的,因?yàn)榫W(wǎng)絡(luò)本身就是一種圖模型嘛。深度優(yōu)先遍歷的思路是先從一個起始網(wǎng)頁開始抓取,然后對根據(jù)鏈接一個一個的逐級進(jìn)行抓取,直到不能再深入抓取為止,返回上一級網(wǎng)頁繼續(xù)跟蹤鏈接。
            一個有向圖深度優(yōu)先搜索的實(shí)例如下所示:
           
            上圖左圖為一個有向圖示意圖,右圖為深度優(yōu)先遍歷的搜索過程示意圖。深度優(yōu)先遍歷的結(jié)果為:
            2)廣度優(yōu)先搜索策略
            廣度優(yōu)先搜索和深度優(yōu)先搜索的工作方式正好是相對的,其思想為:將新下載網(wǎng)頁中發(fā)現(xiàn)的鏈接直接插入待抓取URL隊(duì)列的末尾。也就是指網(wǎng)絡(luò)爬蟲會先抓取起始網(wǎng)頁中鏈接的所有網(wǎng)頁,然后再選擇其中的一個鏈接網(wǎng)頁,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。
            上圖為上邊實(shí)例的有向圖的廣度優(yōu)先搜索流程圖,其遍歷的結(jié)果為:
           v1→v2 →v3 →v4→ v5→ v6→ v7 →v8
            從樹的結(jié)構(gòu)上去看,圖的廣度優(yōu)先遍歷就是樹的層次遍歷。
            3)反向鏈接搜索策略
            反向鏈接數(shù)是指一個網(wǎng)頁被其他網(wǎng)頁鏈接指向的數(shù)量。反向鏈接數(shù)表示的是一個網(wǎng)頁的內(nèi)容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統(tǒng)會使用這個指標(biāo)來評價網(wǎng)頁的重要程度,從而決定不同網(wǎng)頁的抓取先后順序。
              在真實(shí)的網(wǎng)絡(luò)環(huán)境中,由于廣告鏈接、作弊鏈接的存在,反向鏈接數(shù)不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數(shù)。
            4)大站優(yōu)先策略
            對于待抓取URL隊(duì)列中的所有網(wǎng)頁,根據(jù)所屬的網(wǎng)站進(jìn)行分類。對于待下載頁面數(shù)多的網(wǎng)站,優(yōu)先下載。這個策略也因此叫做大站優(yōu)先策略。
            5)其他搜索策略
            一些比較常用的爬蟲搜索側(cè)率還包括Partial PageRank搜索策略(根據(jù)PageRank分值確定下一個抓取的URL)、OPIC搜索策略(也是一種重要性排序)。最后必須要指明的一點(diǎn)是,我們可以根據(jù)自己的需求為網(wǎng)頁的抓取間隔時間進(jìn)行設(shè)定,這樣我們就可以確保我們基本的一些大站或者活躍的站點(diǎn)內(nèi)容不會被漏抓。

          3. 網(wǎng)絡(luò)爬蟲更新策略

            互聯(lián)網(wǎng)是實(shí)時變化的,具有很強(qiáng)的動態(tài)性。網(wǎng)頁更新策略主要是決定何時更新之前已經(jīng)下載過的頁面。常見的更新策略又以下三種:
            1)歷史參考策略
            顧名思義,根據(jù)頁面以往的歷史更新數(shù)據(jù),預(yù)測該頁面未來何時會發(fā)生變化。一般來說,是通過泊松過程進(jìn)行建模進(jìn)行預(yù)測。
            2)用戶體驗(yàn)策略
            盡管搜索引擎針對于某個查詢條件能夠返回數(shù)量巨大的結(jié)果,但是用戶往往只關(guān)注前幾頁結(jié)果。因此,抓取系統(tǒng)可以優(yōu)先更新那些現(xiàn)實(shí)在查詢結(jié)果前幾頁中的網(wǎng)頁,而后再更新那些后面的網(wǎng)頁。這種更新策略也是需要用到歷史信息的。用戶體驗(yàn)策略保留網(wǎng)頁的多個歷史版本,并且根據(jù)過去每次內(nèi)容變化對搜索質(zhì)量的影響,得出一個平均值,用這個值作為決定何時重新抓取的依據(jù)。
            3)聚類抽樣策略
            前面提到的兩種更新策略都有一個前提:需要網(wǎng)頁的歷史信息。這樣就存在兩個問題:第一,系統(tǒng)要是為每個系統(tǒng)保存多個版本的歷史信息,無疑增加了很多的系統(tǒng)負(fù)擔(dān);第二,要是新的網(wǎng)頁完全沒有歷史信息,就無法確定更新策略。
            這種策略認(rèn)為,網(wǎng)頁具有很多屬性,類似屬性的網(wǎng)頁,可以認(rèn)為其更新頻率也是類似的。要計算某一個類別網(wǎng)頁的更新頻率,只需要對這一類網(wǎng)頁抽樣,以他們的更新周期作為整個類別的更新周期?;舅悸啡鐖D:

           

          4. 分布式抓取系統(tǒng)結(jié)構(gòu)

            一般來說,抓取系統(tǒng)需要面對的是整個互聯(lián)網(wǎng)上數(shù)以億計的網(wǎng)頁。單個抓取程序不可能完成這樣的任務(wù)。往往需要多個抓取程序一起來處理。一般來說抓取系統(tǒng)往往是一個分布式的三層結(jié)構(gòu)。如圖所示:
            最下一層是分布在不同地理位置的數(shù)據(jù)中心,在每個數(shù)據(jù)中心里有若干臺抓取服務(wù)器,而每臺抓取服務(wù)器上可能部署了若干套爬蟲程序。這就構(gòu)成了一個基本的分布式抓取系統(tǒng)。
            對于一個數(shù)據(jù)中心內(nèi)的不同抓去服務(wù)器,協(xié)同工作的方式有幾種:
            1)主從式(Master-Slave)
            主從式基本結(jié)構(gòu)如圖所示:
            對于主從式而言,有一臺專門的Master服務(wù)器來維護(hù)待抓取URL隊(duì)列,它負(fù)責(zé)每次將URL分發(fā)到不同的Slave服務(wù)器,而Slave服務(wù)器則負(fù)責(zé)實(shí)際的網(wǎng)頁下載工作。Master服務(wù)器除了維護(hù)待抓取URL隊(duì)列以及分發(fā)URL之外,還要負(fù)責(zé)調(diào)解各個Slave服務(wù)器的負(fù)載情況。以免某些Slave服務(wù)器過于清閑或者勞累。
            這種模式下,Master往往容易成為系統(tǒng)瓶頸。
            2)對等式(Peer to Peer)
            對等式的基本結(jié)構(gòu)如圖所示:
            在這種模式下,所有的抓取服務(wù)器在分工上沒有不同。每一臺抓取服務(wù)器都可以從待抓取在URL隊(duì)列中獲取URL,然后對該URL的主域名的hash值H,然后計算H mod m(其中m是服務(wù)器的數(shù)量,以上圖為例,m為3),計算得到的數(shù)就是處理該URL的主機(jī)編號。
            舉例:假設(shè)對于URL www.baidu.com,計算器hash值H=8,m=3,則H mod m=2,因此由編號為2的服務(wù)器進(jìn)行該鏈接的抓取。假設(shè)這時候是0號服務(wù)器拿到這個URL,那么它將該URL轉(zhuǎn)給服務(wù)器2,由服務(wù)器2進(jìn)行抓取。
            這種模式有一個問題,當(dāng)有一臺服務(wù)器死機(jī)或者添加新的服務(wù)器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴(kuò)展性不佳。針對這種情況,又有一種改進(jìn)方案被提出來。這種改進(jìn)的方案是一致性哈希法來確定服務(wù)器分工。其基本結(jié)構(gòu)如圖所示:
            一致性哈希將URL的主域名進(jìn)行哈希運(yùn)算,映射為一個范圍在0-232之間的某個數(shù)。而將這個范圍平均的分配給m臺服務(wù)器,根據(jù)URL主域名哈希運(yùn)算的值所處的范圍判斷是哪臺服務(wù)器來進(jìn)行抓取。
            如果某一臺服務(wù)器出現(xiàn)問題,那么本該由該服務(wù)器負(fù)責(zé)的網(wǎng)頁則按照順時針順延,由下一臺服務(wù)器進(jìn)行抓取。這樣的話,及時某臺服務(wù)器出現(xiàn)問題,也不會影響其他的工作。

          5. 參考內(nèi)容

            [1] wawlian: 網(wǎng)絡(luò)爬蟲基本原理(一)(二);
            [2] guisu: 搜索引擎-網(wǎng)絡(luò)爬蟲;
            [3] 《這就是搜索引擎:核心技術(shù)詳解》。


          — THE END —


          ?數(shù)學(xué)  |   小學(xué)生如何詮釋數(shù)學(xué)的線條美?
          ?數(shù)學(xué) |  從追女孩到找導(dǎo)彈,這就是數(shù)學(xué)的魅力?。?/a>
          ?字節(jié)員工炸鍋,薪資普降17%!
          ?京東 | AI人才聯(lián)合培養(yǎng)計劃
          ?世界天才大匯總
          ?90后「V神」封神之路:4歲學(xué)編程,19歲創(chuàng)辦以太坊,4年十億身家!
          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人在线观看免费 | 极品人妻侨喘呻吟 | 日韩三级在线观看 | 我爱草逼网 | 九色免费网站 |