垂直型爬蟲架構設計(1)
從事爬蟲方向開發馬上也將近兩年時間了,今天基友問我關于爬蟲的架構設計問題.其實這么久也想總結一下自己的整個開發的過程,架構的設計問題..對自己進行一些總結..僅作參考.
1.爬蟲的分類 :
對于我來說,爬蟲分為兩類:
需要載入配置文件的爬蟲與不需要載入配置文件的爬蟲.
其實也就是人們常說的垂直型爬蟲跟寬度(深度)遍歷爬蟲.
2.爬蟲的架構:
1.寬度遍歷爬蟲.
做過SEO的朋友大概都知道,如果一個網站需要百度能夠盡快的抓取,那么僅僅優化關鍵詞,提高權重等都是比較簡單的優化,爬蟲友好性需要網站在建設的時候就考慮到爬蟲的友好.如:標簽設置,架構設計...
寬度遍歷爬蟲就是寬度抓取,網站在設計的時候就直接是按照寬度設計...不太好理解,也不太好解釋... 大概的意思就是深度少...如; 進入首頁之后---就能看到各個分類,點擊分類就能看到分類列表---點擊分類列表就是內容...減少與用戶的交互,也讓爬蟲能直接找到重點.
各大搜索引擎應用的都是寬度遍歷方式來抓取數據.不信你可以建一個網站.設置十幾級深度..首頁-分類--再分類---再分類之后十幾級之后才能看到內容..你可以試一下,爬蟲抓取的效果怎么樣.
寬度遍歷爬蟲比較常見的很多,Nutch、Heritrix等都是寬度遍歷爬蟲的典型代表,比較常用的就是Nutch.
2.垂直型爬蟲
垂直型爬蟲我個人感覺是最近幾年才被提出的,垂直型爬蟲關注內容與準確還有效率.比較常見的就是輿情項目,財經項目等.僅僅抓取到有效有用的數據,并且在爬蟲 抓取之初就能夠把抓取到的內容進行簡單的處理: 如.提取標題,內容,時間等.
垂直型爬蟲注重效率,相對來說.一個網站有十萬個鏈接,寬度遍歷爬蟲需要把十萬個鏈接都下載到你的數據庫中,而垂直型爬蟲只需要下載對你有用的數據,也許僅有幾千或者一萬,如果垂直型爬蟲抓取這么點數據比寬度遍歷爬蟲抓取的還慢,那么這個項目在這點上就是個垃圾.
垂直型爬蟲相對于寬度遍歷爬蟲又一個特別的地方是:寬度遍歷爬蟲是可定制的,根據某個網站訂制..比如:抓取QQ空間,新浪微博等,都是需要登陸的...或者是有些網站的內容需要javascript來調用才能顯示,那么就需要javascript解析引擎來保證抓取的質量.插件定制是我對垂直型爬蟲做的又一個定義
3.爬蟲的設計
爬蟲想起來復雜做起來其實一點也不復雜,簡單來說就是網站鏈接發現,網站連接處理,鏈接下載---繼續發現鏈接...
進入一個網站首先需要提供這個網站的網址.例如: http://www.baidu.com 那么得到百度之后就需要下載該頁面,下載頁面之后能發現幾個鏈接. http://news.baidu.com http://music.baidu.com 等, 獲得這幾個鏈接之后就是打開這幾個鏈接,繼續獲得新的鏈接....一直持續下去...
如果,僅僅是這樣,那么爬蟲就會'死'在這個網站...比如.在其他頁面也會找到http;'//www.baidu.com 那么再進入這里.再一直這樣循環...就真的死了..所以需要對鏈接進行有效的管理,去重等... 在這個抓取過程中,某個鏈接已經抓取過了,那么在鏈接發現,或者是鏈接下載的時候就可以直接把這個鏈接去掉,不進行下載.那么之后發現的鏈接會越來越少, 那么整個網站的抓取也就會有個結束!
OK,表達能力不是很好,簡單總結,無論編寫什么類型的爬蟲,都需要這些: 鏈接發現--連接管理--鏈接下載-- 那么也就獲取到內容了.
4.垂直型爬蟲的垂直?
垂直型爬蟲在剛開始做爬蟲的時候我就再想為什么叫垂直型爬蟲.現在寫了那么久也不是很理解,我大概覺得垂直的意思是垂直獲取,就好像是有目的有目標的直接去拿想要的東西,所以垂直...!
垂直型爬蟲跟普通型的爬蟲不同的地方在于有目的性.相對于其他爬蟲,目的性非常的明確.就好象我要拿一篇文章,其他的東西都不要,那么垂直型爬蟲可以滿足你!
垂直型爬蟲設計跟寬度遍歷爬蟲的設計區別也不是很大,一樣.... 鏈接發現--連接管理--鏈接下載. 不過大部分的垂直型爬蟲多了一個 信息提取 提取出所需的內容是對垂直型爬蟲最大的考研,也是垂直型爬蟲最重要的功能. 所以在垂直型爬蟲上應該體現的是 鏈接發現-鏈接管理-鏈接下載等.!
個人認為:垂直型爬蟲更加適用于企業級,因為企業級所需資訊內容明確.而且垂直型爬蟲更加的小型,便于管理.實現功能定制化.
來自:http://my.oschina.net/CainGao/blog/506020