爬蟲技術


爬蟲原理:
每個網頁頁面返回到客戶端的都是 html,你需要的內容就在這html里面,這個html你可以用一個字符串去保存到java變量里,你要做的工作就是截取字符串相應位置的內容並保存起來,你給的這個網站每個商品的網頁有個特殊的地方

爬蟲分為兩類:
聚集爬蟲: 聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢准備數據資源。

通用爬蟲:
 網絡爬蟲的組成
 在網絡爬蟲的系統框架中,主過程由控制器,解析器,資源庫三部分組成。控制器的主要工作是負責 給多線程中的各個爬蟲線程分配工作任務。解析器的主要工作是下載網頁,進行頁面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字符、HTML標 簽等內容處理掉,爬蟲的基本工作是由解析器完成。資源庫是用來存放下載到的網頁資源,一般都采用大型的數據庫存儲,如 Oracle數據庫 ,並對其建立索引。

控制器:
  控制器是網絡爬蟲的中央控制器,它主要是負責根據系統傳過來的URL鏈接,分配一線程,然后啟動線程調用爬蟲爬取網頁的過程。
  
解析器:
  解析器是負責網絡爬蟲的主要部分,其負責的工作主要有:下載網頁的功能,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。
  
資源庫:
  主要是用來存儲網頁中下載下來的數據記錄的容器,並提供生成索引的目標源。中大型的數據庫產品有:Oracle、Sql Server等。


概覽web爬蟲
web爬蟲主要功能是從web中發現,下載以及存儲內容。廣泛應用於各種搜索引擎中。
一個典型的web爬蟲主要由以下的部分組成:
  • 能被爬蟲識別的URL庫。
  • 文檔下載模塊,主要用於從web中下載內容。
  • 文檔解析模塊,用於解析下載文檔中的內容,如解析HTML,PDF,Word等等。這個模塊還要提取網頁中的URL和一些對於索引有用的數據。
  • 存儲文檔的元數據以及內容的庫。
  • 規范化URL模塊,把URL轉成標准的格式。
  • URL過濾器,爬蟲可以過濾掉不需要的URL。


設計與實現上述模塊,主要取決於你的爬蟲到底要爬取什么以及要抓取的范圍。最簡單的例子是從一個已知的站點抓取一些網頁,這個爬蟲代碼用一頁紙 就可以寫完。互聯網應用中,可能會碰到這種十分簡單的需求,但是如果要實現一個爬取大量文檔的爬蟲,就不是那么簡單了。一般來說這個爬蟲就是N個應用組成,並且難點是基於分布式的。

爬蟲的兩個階段
一個典型的爬蟲主要有如下兩個階段
  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使用解析器從文檔中發現以及提取元數據和文本內容。


Google:《Java開源Web爬蟲分類列表》
(1)
ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支持通過下載模板和正則表達式來定義下載規則。提供一個swing GUI操作界面。下載地址: http://itsucks.sourceforge.net/

(2)
WebSPHINX
WebSPHINX是一個Java類包和Web爬蟲的交互式開發環境。Web爬蟲(也叫作機器人或蜘蛛)是可以自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工作平台和WebSPHINX類包。 http://www.cs.cmu.edu/~rcm/websphinx/.

(3)
JSpider
JSpider:是一個完全可配置和定制的Web Spider引擎.你可以利用它來檢查網站的錯誤(內在的服務器錯誤等),網站內外部鏈接檢查,分析網站的結構(可創建一個網站地圖),下載整個Web站點,你還可以寫一個JSpider插件來擴展你所需要的功能。 http://j-spider.sourceforge.net/

(4)
Arale
Arale主要為個人使用而設計,而沒有像其它爬蟲一樣是關注於頁面索引。Arale能夠下載整個web站點或來自web站點的某些資源。Arale還能夠把動態頁面映射成靜態頁面。 http://web.tiscali.it/_flat/arale.jsp.html

(5)
Web-Harvest
Web-Harvest是一個Java開源Web數據抽取工具。它能夠收集指定的Web頁面並從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操作。 http://web-harvest.sourceforge.net/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM