樂思軟件的主要目標就是解決網絡信息的采集問題。我們在這個問題上研究了10年也實踐了10年,為國內外許多客戶提供了幾千次網絡信息采集服務。在此基礎上開發的樂思網絡信息采集系統,目前居于國際領先水平(曾在國際招標中擊敗美國競爭對手),國內無出其右者。我們的采集軟件和深聚焦爬蟲類似,但是功能要比簡單的爬蟲強大,只要是公開的網站信息,寫好配置都能夠采集。
馬云說,大數據時代來了?,F在太多互聯網公司都在做大數據,每個公司的數據來源都不止一個,其中占比重較大的一個數據源非網絡爬蟲莫屬。然而不同的公司格局業務背景不同,所需要的數據類型也就不同。不同于搜索網站所用的通用爬蟲,聚焦爬蟲開始越來越多的被人們提起。
聚焦爬蟲,又稱主題爬蟲(或專業爬蟲),是“面向特定主題”的一種網絡爬蟲程序。它與我們通常所說的爬蟲(通用爬蟲)的區別之處就在于,聚焦爬蟲在實施網頁抓取時要進行主題篩選。它盡量保證只抓取與主題相關的網頁信息。
聚焦爬蟲主要分為兩大類。一類是淺聚焦爬蟲,所謂淺聚焦爬蟲是指,爬蟲程序抓取特定網站的的所有信息。其工作方式和通用爬蟲幾乎一樣,唯一的區別是種子URL的選定確定了抓取內容的一致,其核心是種子URL的選擇。另一類是深聚焦爬蟲,深聚焦爬蟲是指在海量的不同內容網頁中,通過主題相關度算法選擇主題相近的URL和內容進行爬取。其核心是如何判斷所爬取的URL和頁面內容是與主題相關的。
關系如下:
由圖可見,淺聚焦爬蟲可以看成是將通用爬蟲局限在了一個單一主題的網站上,因此我們通常所說的聚焦爬蟲大多是指深聚焦爬蟲。
淺聚焦爬蟲從一個或若干初始網頁的URL開始,(例如分類信息網)獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
其工作流程如圖:
可見淺聚焦爬蟲的基本原理跟通用爬蟲的基本原理是一樣的,其特點是選定種子URL,例如,要抓取招聘信息,可以將招聘網站的URL作為種子URL。用主題網站保證了抓取內容的主題一致。
深聚焦爬蟲最主要的特點是主題一致性。然而在浩如煙海的互聯網大數據中要保證所抓取的數據主題一致并不是一件簡單的事情。針對不同的數據需求,這其中需要的策略和方式并沒有統一的解答。在這里不說具體的解決方法,只討論一下常見的解決思路。
這種解決方法是不管頁面的主題是什么,先將頁面爬取下來。對頁面進行簡單的去噪后,利用主題提取策略(關鍵字,分類聚類算法等)對處理后的頁面內容進行主題提取,最后對比設定好的主題,如果主題一致,或在一定的閥值內,則保存頁面進一步進行數據清洗。若主題偏差超過一點閥值,則直接丟棄頁面。這種方式的優點是鏈接頁面全覆蓋,不會出現數據遺漏。但是缺點也十分致命,那就是全覆蓋的頁面,很大一部分是與主題無關的廢棄頁面,這極大的拖慢了爬蟲爬取數據的速度。到后期,爬取數據的速度將是無法接受的。
上面介紹了淺聚焦爬蟲的核心是選定合適的種子URL,這些種子URL主要是主題網站的入口URL。比如北京趕集網擔保貸款頻道的入口URL:http://bj.ganji.com/danbaobaoxian/,這個URL透漏給我們很多信息,根據這些信息,我們可以初步預測到這個URL所鏈接的頁面的主題就是擔保保險,其地域在北京,其平臺是趕集網。由此我們發現,互聯網上的網站或者網站的一個模塊大部分都是有固定主題的,并且同一網站中同一主題的頁面URL,都有一定的規律可循。針對這種情況,通過URL預測頁面主題的思路也就自然而生了。除此之外,頁面中絕大部分超鏈接都是帶有錨文本的,而錨文本基本可以看做是對目標頁面的概括描述。結合對URL的分析和對錨文本的分析,對目標頁面進行主題預測的正確率也就相當可觀了。顯而易見,針對URL的主題預測策略,可以有效的減少不必要的頁面下載,節約下載資源,加快下載速度。然而,這種預測結果并不能完全保證丟棄的URL都是與主題無關的,因此會有一些遺漏。同時,這種方式也無法確保通過預測的頁面都是與主題相關的,因此需要對通過的預測的URL頁面進行頁面內容主題提取,再對比與設定的主題做出取舍。
通過上面的分析,得出一般的解決方法。就是先通過URL分析,丟棄部分URL。下載頁面后,對頁面內容進行主題提取,對比預設定的主題做取舍。最后進行數據清洗。
深聚焦爬蟲的一般結構如下圖:
六個主要的組成部分【控制中心】【下載模塊】【抽取模塊】【清洗模塊】【消重模塊】【資源模塊】
大數據時代,對數據的多樣性和針對性要求越來越高。隨之爬蟲的架構方式也更加靈活多變。比較常見的開源爬蟲框架有Crawler4j、WebMagic、WebCollector、scrapy等。另一方面,針對爬蟲的抓取,被抓取網站也制定了相應的防爬蟲措施。常見的防爬蟲方式有如下幾種:
一、針對頻繁訪問網站的IP設定訪問限制。這是最常見的一種放爬蟲方式,具體體現是,在一個單位時間內,同一個IP的請求數量達到了網站設計的閥值,這個IP就被限制訪問。面對這種情況,可以制定適當的IP訪問策略。
二、使用js和ajax技術的動態頁面。這樣的網頁源代碼中并沒有包含所需的數據,數據包裹存在于二次請求的返回文檔中。針對這樣的頁面,可以分析請求過程,提取二次請求的URL,進而得到想要的數據。
三、其他情況:隨著互聯網的不斷發展,出現了各種各樣的防爬蟲方式。這就需要人們根據實際情況,針對性的解決問題。比如使用模擬瀏覽器(htmlunit,selenium)技術等。
總之,沒有一成不變的互聯網,就沒有一成不變的爬蟲,擁抱變化,才能讓爬蟲爬的更遠。
每一個社交網站都有海量的數據,和海量數據成正比的是社交網站的防爬蟲策略。這就對爬蟲提出了更高更嚴格的要求,也更細化了不同爬蟲之間的差異。然而一成不變不是互聯網的主調,依存互聯網生存的公司,更要學會擁抱變化,甚至預測變化,方能在未來乘風破浪,越行越遠。