web爬蟲

概覽web爬蟲

web爬蟲主要功能是從web中發現,下載以及存儲內容。普遍應用於各類搜索引擎中。java

一個典型的web爬蟲主要由如下的部分組成:web

 

  • 能被爬蟲識別的URL庫。
  • 文檔下載模塊,主要用於從web中下載內容。
  • 文檔解析模塊,用於解析下載文檔中的內容,如解析HTML,PDF,Word等等。這個模塊還要提取網頁中的URL和一些對於索引有用的數據。
  • 存儲文檔的元數據以及內容的庫。
  • 規範化URL模塊,把URL轉成標準的格式。
  • URL過濾器,爬蟲能夠過濾掉不須要的URL。
設計與實現上述模塊,主要取決於你的爬蟲到底要爬取什麼以及要抓取的範圍。最簡單的例子是從一個已知的站點抓取一些網頁,這個爬蟲代碼用一頁紙就能夠寫完。互聯網應用中,可能會碰到這種十分簡單的需求,可是若是要實現一個爬取大量文檔的爬蟲,就不是那麼簡單了。通常來講這個爬蟲就是N個應用組成,而且難點是基於分佈式的。

爬蟲的兩個階段

一個典型的爬蟲主要有以下兩個階段apache

 

  1. URL庫初始化而後開始爬取。
  2. 爬蟲讀取沒有訪問過的URL,來肯定它的工做範圍。

對於要抓取的URL,要進行以下的不重
  1. 獲取URL的內容
  2. 解析內容,獲取URL以及所需的數據。
  3. 存儲有價值的數據。
  4. 規範化新抓取的URL。
  5. 過濾掉不須要爬去的URL。
  6. 把要抓取的URL更新到URL庫中。
  7. 重複步驟2,直到抓取的網頁深度完畢爲止。
從廣度進行分類的話,爬蟲有兩類。通用型和集中型。通用型是採集全部能解析的文檔。它們主要經過URL過濾技術來實現這一過程。而集中型爬蟲主要爬取特定內容的文檔,如爬取sina博客,格式爲固定內容也是咱們感興趣的。

幸運的是,有開源的爬蟲可使用

在java中,nutch和heritrix都提供了爬蟲的實現。Nutch是apache lucene的子項目,地址是http://lucene.apache.org/nutch/。這個項目很是穩定,而且文檔豐富。Nutch把多個網頁存儲在一個文件中。對於大的爬蟲來講,這麼下降I/O讀寫,性能更加優秀。分佈式

Heritrix是互聯網存檔的web爬蟲。項目地址爲http://crawler.archive.org/。Heritrix專一於大型爬蟲的實現。許可證爲LGPL。性能

另外提一下,還有一個項目值得關注,那就是apache tika。項目地址爲http://tika.apache.org/。tika使用解析器從文檔中發現以及提取元數據和文本內容。搜索引擎

相關文章
相關標籤/搜索