您好,登錄后才能下訂單哦!
小編給大家分享一下爬蟲的實現原理是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
網絡爬蟲也被稱作網絡機器人、網絡蜘蛛、網絡螞蟻、網絡機器人等。
網絡爬蟲通常由控制節點、爬蟲節點和資源庫構成。
控制節點,也叫做爬蟲的中央控制器,主要負責根據URL地址(URL:UniformResourceLocation,統一資源定位符,即Internet上用來描述信息資源的字符串,主要用在各種www客戶程序和服務器程序上)分配線程,并調用爬蟲節點進行具體的爬行任務。
爬蟲節點,會按照相關算法對網頁進行具體爬行(包括下載網頁、對網頁文本進行處理等),爬行后會將相應的結果存儲到對應的資源庫中。
從圖中我們可以看到,網絡爬蟲中可以有多個控制節點,而每個控制節點下又可以有多個爬蟲節點。
控制節點之間、控制節點和其下的各爬蟲節點間、同一控制節點下的各爬蟲節點間都可以相互通信。
了解了網絡爬蟲的組成,那么,網絡爬蟲具體有哪些類型呢?
根據實現的技術和結構,網絡爬蟲可以分為通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲和深度網絡爬蟲等幾種類型。
在實際的網絡爬蟲中,通常都是這幾類爬蟲的組合體。
對于不同類型的網絡爬蟲,其實現原理也是不同的,但這些實現原理中,會存在很多共性。
下面將以通用網絡爬蟲和聚焦網絡爬蟲為主,對網絡爬蟲的實現原理進行介紹。
通用網絡爬蟲的實現原理及過程可簡要概括如下圖:
圖:通用網絡爬蟲的實現原理及過程
1. 獲取初始URL
初始URL地址可以由用戶人為指定,也可以由用戶指定的某個或某幾個初始爬取網頁決定。
2. 根據初始URL爬取頁面并獲得新的URL
獲得初始URL地址之后,需要對對應的網頁進行爬取,并將網頁存儲到原始數據庫中,同時將已爬取的URL地址存放到一個URL列表中,并發現新的URL地址,以此來用于去重及判斷爬取的進程。
3. 將新的URL放到URL隊列中
在第2步中,會將新獲取的URL地址放到URL隊列中。
4. 重復爬取過程
從URL隊列中讀取新的URL,并依據新的URL爬取網頁,同時再從新網頁中獲取新URL,并重復上述的爬取過程。
*在編寫爬蟲的時候,一般會設置相應的停止條件,當過程滿足爬蟲系統設置的停止條件時就停止爬取。相對地,如果沒有設置停止條件,爬蟲則會一直爬取下去,直到無法獲取新的URL地址為止。
由于聚焦網絡爬蟲需要有目的地進行爬取,所以相對于通用網絡爬蟲來說,聚焦網絡爬蟲還必須要增加目標定義及過濾機制,即目標的定義、無關鏈接的過濾、下一步要爬取的URL地址的選取等。
整個過程如下圖所示:
圖:聚焦網絡爬蟲的基本原理及其實現過程
1. 對爬取目標的定義和描述
首先依據爬取需求定義好該聚焦網絡爬蟲爬取的目標及進行相關描述。
2.獲取初始的URL。
3.根據初始的URL爬取頁面,并獲得新的URL。
4.從新的URL中過濾掉與爬取目標無關的鏈接
因為聚焦網絡爬蟲對網頁的爬取是有目的性的,所以與目標無關的網頁將會被過濾掉。同時,也需要將已爬取的URL地址存放到一個URL列表中,用于去重和判斷爬取的進程。
5.將過濾后的鏈接放到URL隊列中。
6.根據搜索算法,從URL隊列中確定URL的優先級及下一步要爬取的URL地址
對聚焦網絡爬蟲來說,不同的爬取順序可能導致爬蟲的執行效率不同,因此需要依據搜索策略來確定下一步需要爬取哪些URL地址。
7.從下一步要爬取的URL地址中,讀取新的URL,然后依據新的URL地址爬取網頁,并重復上述爬取過程。滿足系統中設置的停止條件時,或無法獲取新的URL地址時,停止爬行。
增量式網絡爬蟲是指對已下載網頁采取增量式更新并且只爬行新產生的或者已經發生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。
網頁按存在方式可以分為表層網頁和深層網頁。
表層網頁是指傳統搜索引擎可以索引的頁面,以超鏈接可以到達的靜態網頁為主。
而深層網頁則是指那些大部分內容不能通過靜態鏈接獲取的、隱藏在搜索表單后的、只有用戶提交一些關鍵詞才能獲得的網頁。
深層網絡爬蟲主要用于針對深層網絡,其主要的體系結構包含6個基本功能模塊:
爬行控制器、解析器、表單分析器、表單處理器、響應分析器、LVS控制器和兩個爬蟲內部數據結構(URL列表和LVS表)。其中,LVS(Label Value Set)表示標簽和數值集合,用來表示填充表單的數據源。
在深度網絡爬蟲的爬取過程中,最重要的部分就是表單填寫,包含基于領域知識的表單填寫和基于網頁結構分析的表單填寫兩種。
以上是“爬蟲的實現原理是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。