使用Heritrix爬蟲爬取網頁

來源:互聯網
上載者:User

在配置好heritrix後,可以輸入形如:http://localhost:8080的伺服器IE地址,進入UI介面登陸。則可開始建立網頁爬行抓取任務。

1.首先啟動Heritrix後台監聽程式,然後登入WebUI.

成功登入WebUI後,初始介面:

2. 選擇上面一排導覽功能表中的“Jobs”連結,開始建立一個抓取任務,:

3.建立一個Job(Create New Job)有四種選擇方式:Based On Existing Job、Based On a recovery、Based On a profile、With Default。我們選擇第三種方式,點擊“Based On a profile”連結,:

 

4.繼續點擊 “default“連結,這時才真正開始配置一個建立的抓取任務了,:

其中,“Name of a new job”指定了一個Job的名稱,可以任意選取(我選擇的名稱為Dev);Description是關於這個Job的描述,用來為以後抓取提供參考(Dev website);Seeds是指要抓取的網站的種子頁面,以該Seeds為起始抓取點,可以填寫一個URL,也可以填寫多個,填寫多個的話,要保證每個URL在一行,例如以填寫下面三個種子頁面為例:

http://crawler.archive.org
http://portals.apache.org
http://docs.huihoo.com

5.接著,點擊文本域下方的“Modules”按鈕,對抓取任務的處理鏈進行配置,開啟頁面:

在該版本的Heritrix-1.14.4,建立一個抓取任務的時候,設定處理鏈頁面預設給定了一種配置,可以根據具體需要進行詳細配置(或者在詞基礎上進行修改)。

6.配置抓取任務的處理鏈,可以配置(添加、刪除)如下8項:

Select Crawl Scope
Select URI Frontier
Select Pre Processors
Select Fetchers
Select Extractors
Select Writers
Select Post Processors
Select Statistics Tracking

而且,只需要從對應項的下拉式清單單中選擇向對應的項即可,這裡,選擇每項可以非常直觀地從列表中的“包名+類名”選擇匹配的選項,以選擇一個Writer(用於配置抓取到的內容以怎樣的方式寫入本地磁碟)為例:

選中後,點擊後面的“Add”按鈕,即可設定,:

可以通過設定選項後面的Down、Up、Remove等連結進行操作,Info連結是查看具體資訊的。各個選項是有順序的,因為他們是一個抓取鏈。設定完畢後,點擊上方或者下方導覽功能表

中的“Submitmodules”連結提交處理鏈配置,然後可以看到一個個“回”字形的藍色方框不斷嵌套,顯示了剛才配置的詳細資料,:

在此,仍然可以修改對處理鏈的配置。接著,要對運行時的參數進行配置,點擊

中的“Settings”連結,進入配置運行時參數頁面:

可以拖動捲軸,對很多運行時參數進行配置,具體配置可以參考相關文檔手冊,這裡可以設定一下如下所示的http-headers選項,預設配置如下:

可以點擊藍色的“?”查看該項的提示資訊。要根據自己的具體情況進行配置:

user-agent主要是指運行Heritrix的使用者的配置,即使用者的機器配置。首先是瀏覽器的選擇,比如IE/7.0;其中 @VERSION@是指使用Heritrix的版本號碼,這裡應該是1.12.1;最後面的PROJECT_URL_HERE是指要搜尋的地址,比如http://192.168.151.201。

from是指一個Email連絡方式,可以輸入一個Email地址,例如(隨意即可,符合e_mail形式就好)。

其它可以使用預設設定(如果要詳細配置可以參考相關文檔手冊)。這時可以選擇導覽功能表

中的“Submit job”連結,提交一個抓取任務,頁面跳轉到如下所示頁面:

可以看到,上方的紅色粗體的“Job created”提示資訊,這時表示一個抓取任務已經建立成功(還沒有啟動給任務)。

7.接下來,就要啟動這個抓取任務。點擊導覽功能表

中的“Console”連結,回到WebUI控制台,:

該頁面顯示當前抓取器的狀態為Crawler Status: HOLDING JOBS,掛起狀態。還顯示了Jobs、Memory、Alert的資訊。

啟動一個抓取任務。點擊“Start”連結,即可啟動,開始執行抓取任務。頁面:

點擊“Refresh”連結可以看到即時抓取的進度資訊。注意,這個百分數的進度是不準的的,開始啟動的時候需要預先載入,是一個近似的百分比。

由於大部分使用預設的處理鏈的配置,所以抓取的範圍比較廣泛,比如HTML檔案、SWF檔案、CSS檔案等等,所以對指定的一個種子頁面,抓取的資料量很大,速度也是很慢的。

8.另外,選擇中頁面也有很大的關係,比如我們選擇的docs.huihoo.com種子頁面,這是一個很寬泛的種子頁面,抓取後,該種子頁面的子頁面有很多很多。

過一段時間後,點擊“Refresh”連結可以看到一個時刻的抓取進度資訊,:

可見,已經抓取到了很多頁面,並下載到本地了。

當啟動一個抓取任務時,可以在工程的目錄xx\workspace\Heritrix-xx下面看到產生了一個jobs檔案夾,開啟該檔案夾可以看到一個新的檔案夾:Dev-20080404103345484,就是剛才建立的那個抓取任務的名稱。開啟該目錄,可以看到一些設定檔夾,:

開啟mirror目錄,可以看到抓取到URL目錄,:

其中目錄docs.huihoo.com下可以看到抓取了很多內容,:

9.如果啟動一個抓取任務的過程出現異常,則可以在Eclipse控制台上看到異常資訊。比如設定user-agent的時候忘記了這個設定,則啟動抓取任務的時候則出現異常:

04/04/2008 10:30:52 +0000 嚴重 org.archive.crawler.framework.CrawlController initialize On crawl: Dev You must set the User-Agent and From HTTP header values to acceptable strings.
User-Agent: [software-name](+[info-url])[misc]
From: [email-address]

org.archive.crawler.framework.exceptions.FatalConfigurationException: unacceptable user-agent or from (Reedit your order file).
at org.archive.crawler.datamodel.CrawlOrder.checkUserAgentAndFrom(CrawlOrder.java:436)
at org.archive.crawler.framework.CrawlController.initialize(CrawlController.java:335)
at org.archive.crawler.admin.CrawlJob.setupForCrawlStart(CrawlJob.java:846)
at org.archive.crawler.admin.CrawlJobHandler.startNextJobInternal(CrawlJobHandler.java:1142)
at org.archive.crawler.admin.CrawlJobHandler$3.run(CrawlJobHandler.java:1125)
at java.lang.Thread.run(Thread.java:595)
org.archive.crawler.framework.exceptions.InitializationException: On crawl: Dev You must set the User-Agent and From HTTP header values to acceptable strings.
User-Agent: [software-name](+[info-url])[misc]
From: [email-address]

at org.archive.crawler.framework.CrawlController.initialize(CrawlController.java:383)
at org.archive.crawler.admin.CrawlJob.setupForCrawlStart(CrawlJob.java:846)
at org.archive.crawler.admin.CrawlJobHandler.startNextJobInternal(CrawlJobHandler.java:1142)
at org.archive.crawler.admin.CrawlJobHandler$3.run(CrawlJobHandler.java:1125)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.archive.crawler.framework.exceptions.FatalConfigurationException: unacceptable user-agent or from (Reedit your order file).
at org.archive.crawler.datamodel.CrawlOrder.checkUserAgentAndFrom(CrawlOrder.java:436)
at org.archive.crawler.framework.CrawlController.initialize(CrawlController.java:335)
... 4 more

 

而且,在WebUI控制台上也可以看到提示資訊,例如Alerts:1(1 new)表示有一個異常或者錯誤,即“Alerts”連結就可以查看異常資訊。

正常啟動Alerts資訊為Alerts:no alert。

出現異常後,可以重新設定抓取任務。

這就是一個簡單的使用Heritrix建立抓取任務的例子。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.