搜尋引擎技術之網絡爬蟲

2021-02-24 算法與數學之美

作者:Poll的筆記 

來源:http://www.cnblogs.com/maybe2030/p/4778134.html

閱讀目錄

  隨著網際網路的大力發展,網際網路稱為信息的主要載體,而如何在網際網路中搜集信息是網際網路領域面臨的一大挑戰。網絡爬蟲技術是什麼?其實網絡爬蟲技術就是指的網絡數據的抓取,因為在網絡中抓取數據是具有關聯性的抓取,它就像是一隻蜘蛛一樣在網際網路中爬來爬去,所以我們很形象地將其稱為是網絡爬蟲技術。其中網絡爬蟲也被稱為是網絡機器人或者是網絡追逐者。

  網絡爬蟲技術是搜尋引擎架構中最為根本的數據技術,通過網絡爬蟲技術,我們可以將網際網路中數以百億計的網頁信息保存到本地,形成一個鏡像文件,為整個搜尋引擎提供數據支撐。

1. 網絡爬蟲技術基本工作流程和基礎架構

  網絡爬蟲獲取網頁信息的方式和我們平時使用瀏覽器訪問網頁的工作原理是完全一樣的,都是根據HTTP協議來獲取,其流程主要包括如下步驟:

  1)連接DNS域名伺服器,將待抓取的URL進行域名解析(URL->IP);

  2)根據HTTP協議,發送HTTP請求來獲取網頁內容。

  一個完整的網絡爬蟲基礎框架如下圖所示:

  整個架構共有如下幾個過程:

  1)需求方提供需要抓取的種子URL列表,根據提供的URL列表和相應的優先級,建立待抓取URL隊列(先來先抓);

  2)根據待抓取URL隊列的排序進行網頁抓取;

  3)將獲取的網頁內容和信息下載到本地的網頁庫,並建立已抓取URL列表(用於去重和判斷抓取的進程);

  4)將已抓取的網頁放入到待抓取的URL隊列中,進行循環抓取操作;

2. 網絡爬蟲的抓取策略

  在爬蟲系統中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什麼樣的順序排列也是一個很重要的問題,因為這涉及到先抓取哪個頁面,後抓取哪個頁面的問題。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:

  1)深度優先遍歷策略

  深度優先遍歷策略很好理解,這跟我們有向圖中的深度優先遍歷是一樣的,因為網絡本身就是一種圖模型嘛。深度優先遍歷的思路是先從一個起始網頁開始抓取,然後對根據連結一個一個的逐級進行抓取,直到不能再深入抓取為止,返回上一級網頁繼續跟蹤連結。

  一個有向圖深度優先搜索的實例如下所示:

 

  上圖左圖為一個有向圖示意圖,右圖為深度優先遍歷的搜索過程示意圖。深度優先遍歷的結果為:

  2)廣度優先搜索策略

  廣度優先搜索和深度優先搜索的工作方式正好是相對的,其思想為:將新下載網頁中發現的連結直接插入待抓取URL隊列的末尾。也就是指網絡爬蟲會先抓取起始網頁中連結的所有網頁,然後再選擇其中的一個連結網頁,繼續抓取在此網頁中連結的所有網頁。

  上圖為上邊實例的有向圖的廣度優先搜索流程圖,其遍歷的結果為:

 v1→v2 →v3 →v4→ v5→ v6→ v7 →v8

  從樹的結構上去看,圖的廣度優先遍歷就是樹的層次遍歷。

  3)反向連結搜索策略

  反向連結數是指一個網頁被其他網頁連結指向的數量。反向連結數表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜尋引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。

    在真實的網絡環境中,由於廣告連結、作弊連結的存在,反向連結數不能完全等他我那個也的重要程度。因此,搜尋引擎往往考慮一些可靠的反向連結數。

  4)大站優先策略

  對於待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對於待下載頁面數多的網站,優先下載。這個策略也因此叫做大站優先策略。

  5)其他搜索策略

  一些比較常用的爬蟲搜索側率還包括Partial PageRank搜索策略(根據PageRank分值確定下一個抓取的URL)、OPIC搜索策略(也是一種重要性排序)。最後必須要指明的一點是,我們可以根據自己的需求為網頁的抓取間隔時間進行設定,這樣我們就可以確保我們基本的一些大站或者活躍的站點內容不會被漏抓。

3. 網絡爬蟲更新策略

  網際網路是實時變化的,具有很強的動態性。網頁更新策略主要是決定何時更新之前已經下載過的頁面。常見的更新策略又以下三種:

  1)歷史參考策略

  顧名思義,根據頁面以往的歷史更新數據,預測該頁面未來何時會發生變化。一般來說,是通過泊松過程進行建模進行預測。

  2)用戶體驗策略
  儘管搜尋引擎針對於某個查詢條件能夠返回數量巨大的結果,但是用戶往往只關注前幾頁結果。因此,抓取系統可以優先更新那些現實在查詢結果前幾頁中的網頁,而後再更新那些後面的網頁。這種更新策略也是需要用到歷史信息的。用戶體驗策略保留網頁的多個歷史版本,並且根據過去每次內容變化對搜索質量的影響,得出一個平均值,用這個值作為決定何時重新抓取的依據。
  3)聚類抽樣策略

  前面提到的兩種更新策略都有一個前提:需要網頁的歷史信息。這樣就存在兩個問題:第一,系統要是為每個系統保存多個版本的歷史信息,無疑增加了很多的系統負擔;第二,要是新的網頁完全沒有歷史信息,就無法確定更新策略。

  這種策略認為,網頁具有很多屬性,類似屬性的網頁,可以認為其更新頻率也是類似的。要計算某一個類別網頁的更新頻率,只需要對這一類網頁抽樣,以他們的更新周期作為整個類別的更新周期。基本思路如圖:

 

4. 分布式抓取系統結構

  一般來說,抓取系統需要面對的是整個網際網路上數以億計的網頁。單個抓取程序不可能完成這樣的任務。往往需要多個抓取程序一起來處理。一般來說抓取系統往往是一個分布式的三層結構。如圖所示:

  最下一層是分布在不同地理位置的數據中心,在每個數據中心裡有若干臺抓取伺服器,而每臺抓取伺服器上可能部署了若干套爬蟲程序。這就構成了一個基本的分布式抓取系統。

  對於一個數據中心內的不同抓去伺服器,協同工作的方式有幾種:

  1)主從式(Master-Slave)

  主從式基本結構如圖所示:

  對於主從式而言,有一臺專門的Master伺服器來維護待抓取URL隊列,它負責每次將URL分發到不同的Slave伺服器,而Slave伺服器則負責實際的網頁下載工作。Master伺服器除了維護待抓取URL隊列以及分發URL之外,還要負責調解各個Slave伺服器的負載情況。以免某些Slave伺服器過於清閒或者勞累。

  這種模式下,Master往往容易成為系統瓶頸。

  2)對等式(Peer to Peer)

  對等式的基本結構如圖所示:

  在這種模式下,所有的抓取伺服器在分工上沒有不同。每一臺抓取伺服器都可以從待抓取在URL隊列中獲取URL,然後對該URL的主域名的hash值H,然後計算H mod m(其中m是伺服器的數量,以上圖為例,m為3),計算得到的數就是處理該URL的主機編號。

  舉例:假設對於URL www.baidu.com,計算器hash值H=8,m=3,則H mod m=2,因此由編號為2的伺服器進行該連結的抓取。假設這時候是0號伺服器拿到這個URL,那麼它將該URL轉給伺服器2,由伺服器2進行抓取。

  這種模式有一個問題,當有一臺伺服器死機或者添加新的伺服器,那麼所有URL的哈希求餘的結果就都要變化。也就是說,這種方式的擴展性不佳。針對這種情況,又有一種改進方案被提出來。這種改進的方案是一致性哈希法來確定伺服器分工。其基本結構如圖所示:

  一致性哈希將URL的主域名進行哈希運算,映射為一個範圍在0-232之間的某個數。而將這個範圍平均的分配給m臺伺服器,根據URL主域名哈希運算的值所處的範圍判斷是哪臺伺服器來進行抓取。

  如果某一臺伺服器出現問題,那麼本該由該伺服器負責的網頁則按照順時針順延,由下一臺伺服器進行抓取。這樣的話,及時某臺伺服器出現問題,也不會影響其他的工作。

5. 參考內容

  [1] wawlian: 網絡爬蟲基本原理(一)(二);

  [2] guisu: 搜尋引擎-網絡爬蟲;

  [3] 《這就是搜尋引擎:核心技術詳解》。

備註:

1、如果有題目諮詢,請把題目表述清楚(備註姓名),發到公號後臺。抱歉不能一 一解答。但我們會定期整理,發送推文,以供更多朋友參與交流。

2、如果您想支持本號的運營,請點擊一下二維碼讚賞,請不要直接在公號裡發紅包。否則我們只能看到如下:

謝謝理解與支持!

 

交流分享、謝謝支持!

相關焦點

  • 搜尋引擎蜘蛛(爬蟲)工作過程及原理
    什麼是搜尋引擎爬蟲,搜尋引擎爬蟲是如何工作的。搜尋引擎爬蟲也叫做搜尋引擎蜘蛛,是用來抓取網頁信息的,搜尋引擎抓取過程分為大致五個步驟。#Python爬蟲#分別是:抓取 → 存放 → 甄別 → 收錄 → 權重衡量分配排名搜尋引擎蜘蛛首先會抓取網頁信息,把抓取到的信息存放到搜尋引擎臨時資料庫中,接著搜尋引擎會根據自身的甄別原則分析信息價值,有價值的信息保留下來,沒有價值的信息進行刪除處理。
  • 推薦四個網絡爬蟲抓包神器
    目前市面上比較不錯的網絡爬蟲抓包工具有Fiddler、charles、Anyproxy和mitmproxy等。有人可能會問,何為網絡爬蟲?首先,網絡爬蟲它是一種程序,它的樣子如同一個大蜘蛛.它將網絡上全部的連結和內容進行查索,建立相關的資料庫並引入。往往較好的爬蟲將會決定搜尋引擎的質量。CharlesCharles是一款macOS上的一款抓包分析工具之一。當然他也支持windows和linux。
  • 什麼是搜尋引擎蜘蛛,什麼是爬蟲程序?有哪些類型
    什麼是搜尋引擎蜘蛛,什麼是爬蟲程序?搜尋引擎蜘蛛程序,其實就是搜尋引擎的一個自動應用程式,它的作用是什麼呢?其實很簡單,就是在網際網路中瀏覽信息,然後把這些信息都抓取到搜尋引擎的伺服器上,然後建立索引庫等等。
  • 爬蟲玩的好,監獄進的早
    但當下大數據風控行業卻迎來多事之秋,多家為網際網路小貸公司、個人消費類業務金融等公司提供服務的大數據風控領域企業被抓,他們旗下的爬蟲業務先後都因「涉黑」被暫停營業。這些企業「收緊或叫停數據服務」的背後與涉嫌利用網絡爬蟲技術侵犯個人隱私有關聯。
  • Python網絡爬蟲
    Python網絡爬蟲第一篇(一):為什麼要學習網絡爬蟲?大數據成為當今時代的熱門話題之一,在數據量爆發增長的網際網路時代,網站與用戶溝通實質為數據的交換。如果大量的數據得以分析,我們能夠對事件的看法,解決方案做出更好的決策。
  • 網絡營銷專員表示網絡營銷中設置不當會影響蜘蛛爬蟲對網站抓取
    在日常網站優化中如果想要網站擁有良好的網站排名,就要針對搜尋引擎的抓取習慣培養友好度和信任度,網站在運營優化中難免會發生因為一些細節問題影響蜘蛛爬蟲對網站正常抓取,那麼究竟哪些操作設置會影響蜘蛛爬蟲對網站的抓取呢?下面就針對該問題進行詳細分析,希望可以幫助到大家。
  • Python爬蟲實戰 | 只需 「4步」 入門網絡爬蟲(有福利哦)
    >什麼是爬蟲?網絡爬蟲也是獲取數據的一個途徑。對於大數據行業,數據的價值不言而喻,在這個信息爆炸的年代,網際網路上有太多的信息數據,對於中小微公司,合理利用爬蟲爬取有價值的數據,是彌補自身先天數據短板的不二選擇。
  • 爬蟲與User-Agent
    不同的瀏覽器會用不同的用戶代理字符串(User Agent Strings)作為自身的標誌,當搜尋引擎通過網絡爬蟲訪問網頁時,也會通過用戶代理字符串來進行自身的標示,這也是為何網站統計報告能夠統計瀏覽器信息,爬蟲信息等。網站需要獲取用戶客戶端的信息,了解網站內容在客戶端的展現形式,一些網站通過判斷UA來給不同的作業系統,不同的瀏覽器發送不同的頁面。
  • 鄭州鷹眼大數據的技術核心是?
    鷹眼大數據智能營銷軟體竟然是這樣更新的,技術好強大! 好神奇,鷹眼智客竟然採集出我的客源 鄭州鷹眼大數據的技術核心是? 網絡爬蟲(web crawler)也叫網頁蜘蛛,網絡機器人,是一種用來自動瀏覽全球資訊網的程序或者腳本。
  • 什麼是Python網絡爬蟲?看這篇清晰多了!
    >什麼是爬蟲?網絡爬蟲也是獲取數據的一個途徑。對於大數據行業,數據的價值不言而喻,在這個信息爆炸的年代,網際網路上有太多的信息數據,對於中小微公司,合理利用爬蟲爬取有價值的數據,是彌補自身先天數據短板的不二選擇。
  • 爬蟲大戰! 看邦盛科技如何反爬抓「蟲」?
    雖以多足動物命名但卻起源於搜尋引擎,即按照一定的規則,自動抓取網際網路信息的程序或腳本。隨著漫長進化,這一物種被用於各大網際網路金融、電商平臺、社交網絡等。利用網絡爬蟲,票販黃牛可以在幾分鐘內搶佔所有熱門線路的車票,大量的搶佔會造成網站變得很卡。據業內人士估計,80%以上低價機票被票務公司的爬蟲搶走。
  • 2018年最新搜尋引擎蜘蛛大全
    今天冬鏡SEO講的是2018年最新各大搜尋引擎蜘蛛名稱整理分享各大seo搜尋引擎的蜘蛛會不斷地訪問抓取我們站點的內容,也會消耗一定的站點流量有時候就需要屏蔽某些蜘蛛訪問我們的站點,文章尾部會講解決辦法了解各大搜尋引擎蜘蛛爬蟲,對我們進行網站SEO優化起到很大作用冬鏡SEO收集了各大搜尋引擎的蜘蛛爬蟲UA,以便你需要時查閱
  • 常見客戶SEO問題解答:搜尋引擎的優化規則是什麼
    1、搜尋引擎的具體優化規則是什麼? 搜尋引擎的優化規則是什麼 蜘蛛(Spider): 被搜尋引擎派出能在網上發現新網頁並抓取的程序稱為蜘蛛,其從已知的資料庫出發,像正常用戶的瀏覽器一樣訪問這些網頁
  • 什麼是搜尋引擎蜘蛛?工作原理是什麼?
    今天是我們江南網盟記錄的真實網絡營銷項目:「打造價值百萬的網際網路品牌」第10天,我們將每天分享真實的網際網路營銷過程。現在「推企靈」這個名字還沒有人知道,但是一年後,會有很多人知道這個名字,並且我們需要通過這個品牌,獲取客戶為企業盈利創收,很有幸與大家分享這一過程。
  • 專家熱議數據安全犯罪:增設「妨害數據信用罪」打擊網絡爬蟲
    正義網電(高航)「網絡爬蟲是一種中立的技術手段,數據爬取是否構成犯罪,要根據爬取行為本身和獲取數據的性質進行實質性判斷;流量造假危及數據信用生態,形成了大量經濟泡沫,建議通過立法增設「妨害數據信用罪」來加強打擊。」近日,浙江理工大學於杭州主辦的數據安全犯罪前沿論壇上,部分與會專家發表了上述觀點。
  • KHIPU奇普,縱向定義搜尋引擎
    以搜尋引擎的開發為重心,解決中心化的搜尋引擎導致的用戶隱私洩露的難題,避免競價排名等導致的虛假信息呈現,致力於將公平公正的去中心化搜尋引擎在全世界普及。2020年,Khipu依然在全身心的圍繞實際場景做應用開發,追求為用戶帶去最切身利益保護的區塊鏈落地應用。Khipu基於搜尋引擎的成果上聚焦內容服務平臺做出了縱向定義延伸。
  • 如何用Java實現網絡爬蟲
    作品功能演示如下:打開chap12目錄下的begin子文件夾,會看到裡面包含一個jar文件,如圖12.1所示,Spider.jar是爬蟲程序。 圖12.5 Vjudge用戶信息 知識介紹所謂網頁抓取,就是把URL地址中指定的網絡資源從網絡流中讀取出來,保存到本地。
  • 手把手教你寫網絡爬蟲:Web應用的漏洞檢測實戰篇!
    作為剛入門的安全小白,對其工作原理產生了濃厚的興趣,逐漸深層剝離Web應用漏洞檢測的本質是網絡爬蟲技術與漏洞檢測技術的結合,網絡爬蟲主要爬取網站結構並收集可能存在的攻擊面,漏洞檢測技術則是在爬蟲結果的基礎上進行針對性的修改並重放,根據伺服器響應進行判斷。在本篇文章中,我們將重點介紹爬蟲技術方面的知識。
  • 溫昱:搜尋引擎數據痕跡處理中權利義務關係之反思
    關鍵詞:搜尋引擎 數據痕跡權利 霍菲爾德權利 理論權利 義務關係 個人信息「雁過留聲、人過留名」說的是人的活動必然會產生一定影響,留有痕跡可循。網絡空間更是如此,舉凡人們網絡活動必留下數據痕跡。搜尋引擎是處理數據痕跡的常用工具,在處理不同數據痕跡的過程中,以搜尋引擎為中心的權利義務關係的具體情形、性質、主體不盡相同,一概論之難免偏頗。
  • 搜尋引擎是如何判斷文章的原創性
    伺服器時間或蜘蛛爬行時間判斷內容是否原始的重要依據之一就是更新時間,因此搜尋引擎應該通過掌握伺服器時間對URL的爬行時間做出更加準確的判斷,以便根據內容更新的時間做出更加深入的判斷。與之前收錄的內容進行比較當搜尋引擎爬蟲發現新的內容,它會與之前收錄的內容進行比較,確保內容的原創性。