天天看點

nutch雜記

1. 如何繞過目标站點的robots.txt限制

多數站點都是隻允許百度、google等搜尋引擎抓取的,是以會在robots.txt裡限制其他爬蟲。

nutch自然是會遵循robots協定的,但是我們可以通過修改nutch源碼來繞過限制。

相關代碼位于(nutch版本1.5.1,其他版本未測試):

org.apache.nutch.fetcher.Fetcher的run方法.

找到以下幾行代碼并注釋掉就OK了。

2. url掉轉導緻html parse不成功的問題

在抓取百度百科的景點資料時,發現部分頁面不會走html parse部分的邏輯,而我的plugin是基于HtmlParserFilter擴充點的,因而沒有生效。

後來發現請求部分頁面的連結傳回的http狀态為301,跳轉之後才會到真正頁面,而nutch預設是不會抓取跳轉後的頁面的.這時需要修改nutch-site.xml,加入以下配置即可,nutch-default.xml裡的預設值是0,我們這裡改成一個大于0的值,nutch就會繼續抓取跳轉後的頁面了。

3. 抽取的過程中發現某些屬性老是抽不到,而在不使用nutch抓取的情況下是能抽到的,進而懷疑nutch抓取的頁面不全。于是去google了一下"nutch content limit",發現nutch有這麼一個配置項:

用來限制抓取内容的大小,放大10倍後,問題解決。

需要注意的是nutch還有一個很容易混淆的配置項:

兩個配置用于的協定不同,前者是http協定,後者是file協定,我一開始就配置錯了,折騰了半天。。。

PS:最後推薦兩篇介紹nutch的文章,在官方文檔不那麼給力的情況下,這兩篇文章給了我不小的幫助,感謝下作者。

[url]http://www.atlantbh.com/apache-nutch-overview/[/url] 對nutch的整體流程做了介紹

[url]http://www.atlantbh.com/precise-data-extraction-with-apache-nutch/[/url] 用實際例子介紹了nutch plugin的開發和部署

繼續閱讀