爬蟲原理 – 樂思網(wǎng)絡輿情監(jiān)測,快全準! http://m.skyseo.cn/wp Sun, 31 Jan 2016 09:06:57 +0000 zh-CN hourly 1 https://wordpress.org/?v=5.5.20 聚焦爬蟲原理 http://m.skyseo.cn/wp/article/11031 Sun, 31 Jan 2016 17:00:50 +0000 http://m.skyseo.cn/wp/?p=11031 樂思軟件的主要目標就是解決網(wǎng)絡信息的采集問題。我們在這個問題上研究了10年也實踐了10年,為國內(nèi)外許多客戶提供了幾千次網(wǎng)絡信息采集服務。在此基礎上開發(fā)的樂思網(wǎng)絡信息采集系統(tǒng),目前居于國際領先水平(曾在國際招標中擊敗美國競爭對手),國內(nèi)無出其右者。我們的采集軟件和深聚焦爬蟲類似,但是功能要比簡單的爬蟲強大,只要是公開的網(wǎng)站信息,寫好配置都能夠采集。

導讀

馬云說,大數(shù)據(jù)時代來了。現(xiàn)在太多互聯(lián)網(wǎng)公司都在做大數(shù)據(jù),每個公司的數(shù)據(jù)來源都不止一個,其中占比重較大的一個數(shù)據(jù)源非網(wǎng)絡爬蟲莫屬。然而不同的公司格局業(yè)務背景不同,所需要的數(shù)據(jù)類型也就不同。不同于搜索網(wǎng)站所用的通用爬蟲,聚焦爬蟲開始越來越多的被人們提起。

 

1. 聚焦爬蟲的原理

 

1.1?概念

聚焦爬蟲,又稱主題爬蟲(或?qū)I(yè)爬蟲),是面向特定主題的一種網(wǎng)絡爬蟲程序。它與我們通常所說的爬蟲(通用爬蟲)的區(qū)別之處就在于,聚焦爬蟲在實施網(wǎng)頁抓取時要進行主題篩選。它盡量保證只抓取與主題相關的網(wǎng)頁信息。

 

 

1.2?聚焦爬蟲的分類

聚焦爬蟲主要分為兩大類。一類是淺聚焦爬蟲,所謂淺聚焦爬蟲是指,爬蟲程序抓取特定網(wǎng)站的的所有信息。其工作方式和通用爬蟲幾乎一樣,唯一的區(qū)別是種子URL的選定確定了抓取內(nèi)容的一致,其核心是種子URL的選擇。另一類是深聚焦爬蟲,深聚焦爬蟲是指在海量的不同內(nèi)容網(wǎng)頁中,通過主題相關度算法選擇主題相近的URL和內(nèi)容進行爬取。其核心是如何判斷所爬取的URL和頁面內(nèi)容是與主題相關的。

關系如下:

由圖可見,淺聚焦爬蟲可以看成是將通用爬蟲局限在了一個單一主題的網(wǎng)站上,因此我們通常所說的聚焦爬蟲大多是指深聚焦爬蟲。

 

1.2.1?淺聚焦爬蟲

淺聚焦爬蟲從一個或若干初始網(wǎng)頁的URL開始,(例如分類信息網(wǎng))獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。

其工作流程如圖:

可見淺聚焦爬蟲的基本原理跟通用爬蟲的基本原理是一樣的,其特點是選定種子URL,例如,要抓取招聘信息,可以將招聘網(wǎng)站的URL作為種子URL。用主題網(wǎng)站保證了抓取內(nèi)容的主題一致。

 

1.2.2?深聚焦爬蟲

深聚焦爬蟲最主要的特點是主題一致性。然而在浩如煙海的互聯(lián)網(wǎng)大數(shù)據(jù)中要保證所抓取的數(shù)據(jù)主題一致并不是一件簡單的事情。針對不同的數(shù)據(jù)需求,這其中需要的策略和方式并沒有統(tǒng)一的解答。在這里不說具體的解決方法,只討論一下常見的解決思路。

一、針對頁面內(nèi)容

這種解決方法是不管頁面的主題是什么,先將頁面爬取下來。對頁面進行簡單的去噪后,利用主題提取策略(關鍵字,分類聚類算法等)對處理后的頁面內(nèi)容進行主題提取,最后對比設定好的主題,如果主題一致,或在一定的閥值內(nèi),則保存頁面進一步進行數(shù)據(jù)清洗。若主題偏差超過一點閥值,則直接丟棄頁面。這種方式的優(yōu)點是鏈接頁面全覆蓋,不會出現(xiàn)數(shù)據(jù)遺漏。但是缺點也十分致命,那就是全覆蓋的頁面,很大一部分是與主題無關的廢棄頁面,這極大的拖慢了爬蟲爬取數(shù)據(jù)的速度。到后期,爬取數(shù)據(jù)的速度將是無法接受的。

二、針對URL

上面介紹了淺聚焦爬蟲的核心是選定合適的種子URL,這些種子URL主要是主題網(wǎng)站的入口URL。比如北京趕集網(wǎng)擔保貸款頻道的入口URLhttp://bj.ganji.com/danbaobaoxian/,這個URL透漏給我們很多信息,根據(jù)這些信息,我們可以初步預測到這個URL所鏈接的頁面的主題就是擔保保險,其地域在北京,其平臺是趕集網(wǎng)。由此我們發(fā)現(xiàn),互聯(lián)網(wǎng)上的網(wǎng)站或者網(wǎng)站的一個模塊大部分都是有固定主題的,并且同一網(wǎng)站中同一主題的頁面URL,都有一定的規(guī)律可循。針對這種情況,通過URL預測頁面主題的思路也就自然而生了。除此之外,頁面中絕大部分超鏈接都是帶有錨文本的,而錨文本基本可以看做是對目標頁面的概括描述。結合對URL的分析和對錨文本的分析,對目標頁面進行主題預測的正確率也就相當可觀了。顯而易見,針對URL的主題預測策略,可以有效的減少不必要的頁面下載,節(jié)約下載資源,加快下載速度。然而,這種預測結果并不能完全保證丟棄的URL都是與主題無關的,因此會有一些遺漏。同時,這種方式也無法確保通過預測的頁面都是與主題相關的,因此需要對通過的預測的URL頁面進行頁面內(nèi)容主題提取,再對比與設定的主題做出取舍。

通過上面的分析,得出一般的解決方法。就是先通過URL分析,丟棄部分URL。下載頁面后,對頁面內(nèi)容進行主題提取,對比預設定的主題做取舍。最后進行數(shù)據(jù)清洗。

 

1.3?架構

深聚焦爬蟲的一般結構如下圖:

六個主要的組成部分【控制中心】【下載模塊】【抽取模塊】【清洗模塊】【消重模塊】【資源模塊】

  • 控制模塊:控制模塊由程序出入口、下載調(diào)度策略、抽取調(diào)度策略、清洗調(diào)度策略和URL消重調(diào)度策略組成。程序出入口是程序開始、初始化和結束地方。下載調(diào)度策略根據(jù)當前需要下載的網(wǎng)頁,分配IPCOOKIE等下載資源,并根據(jù)頁面下載器的反饋(失敗或成功),決定程序下一步的走向。抽取調(diào)度策略根據(jù)當前已經(jīng)下載的頁面隊列情況,來決定調(diào)用抽取模塊對某一部分頁面進行抽取以及調(diào)用抽取模塊中的哪一種抽取模式。清洗調(diào)度策略根據(jù)抽取的文本和URL隊列情況,決定其被清洗的優(yōu)先度,從而有序的清洗數(shù)據(jù)。URL消重策略根據(jù)URL隊列情況決定何時調(diào)用URL消重器,避免內(nèi)存中存儲過多的URL
  • 下載模塊:根據(jù)控制中心傳過來的URLIPCOOKIE等下載資源下載頁面,并將下載結果返回給控制中心。
  • 抽取模塊:接受控制中心下發(fā)的頁面源代碼和抽取指標,根據(jù)抽取指標對源代碼進行抽取,并將抽取結果返回控制中心。
  • 清洗模塊分為文本清洗和URL清洗,文本清洗根據(jù)預設的主題以及相對應的主題相關度算法,決定是舍棄文本,還是將文本保存入庫。URL清洗是根據(jù)URL分析結果,預測當前URL所鏈接的頁面是否與主題相關,若相關則將URL返回控制中心,反之丟棄此URL
  • URL消重模塊:針對有些主題突出的頁面被許多頁面鏈接,從而導致大量重復下載此頁面造成資源浪費和數(shù)據(jù)質(zhì)量低下的情況,調(diào)用消重模塊將重復的URL丟棄,將不重復的URL返回到下載資源模塊的URL隊列中。
  • 資源模塊:保存有下載所需要的所有資源,包括代理IPCOOKIEURL等信息。

 

 

2聚焦爬蟲的發(fā)展

大數(shù)據(jù)時代,對數(shù)據(jù)的多樣性和針對性要求越來越高。隨之爬蟲的架構方式也更加靈活多變。比較常見的開源爬蟲框架有Crawler4jWebMagicWebCollectorscrapy等。另一方面,針對爬蟲的抓取,被抓取網(wǎng)站也制定了相應的防爬蟲措施。常見的防爬蟲方式有如下幾種:

一、針對頻繁訪問網(wǎng)站的IP設定訪問限制。這是最常見的一種放爬蟲方式,具體體現(xiàn)是,在一個單位時間內(nèi),同一個IP的請求數(shù)量達到了網(wǎng)站設計的閥值,這個IP就被限制訪問。面對這種情況,可以制定適當?shù)?/span>IP訪問策略。

二、使用jsajax技術的動態(tài)頁面。這樣的網(wǎng)頁源代碼中并沒有包含所需的數(shù)據(jù),數(shù)據(jù)包裹存在于二次請求的返回文檔中。針對這樣的頁面,可以分析請求過程,提取二次請求的URL,進而得到想要的數(shù)據(jù)。

三、其他情況:隨著互聯(lián)網(wǎng)的不斷發(fā)展,出現(xiàn)了各種各樣的防爬蟲方式。這就需要人們根據(jù)實際情況,針對性的解決問題。比如使用模擬瀏覽器(htmlunit,selenium)技術等。

總之,沒有一成不變的互聯(lián)網(wǎng),就沒有一成不變的爬蟲,擁抱變化,才能讓爬蟲爬的更遠。

 

3結語

每一個社交網(wǎng)站都有海量的數(shù)據(jù),和海量數(shù)據(jù)成正比的是社交網(wǎng)站的防爬蟲策略。這就對爬蟲提出了更高更嚴格的要求,也更細化了不同爬蟲之間的差異。然而一成不變不是互聯(lián)網(wǎng)的主調(diào),依存互聯(lián)網(wǎng)生存的公司,更要學會擁抱變化,甚至預測變化,方能在未來乘風破浪,越行越遠。

 

 

 

]]>