2013-12-17 88 views
2

我正在按照教程here,試圖建立一個機器人對網站。Nutch域正則表達式

我在包含所有產品類別的頁面中。說它是www.example.com/allproducts

在深入每個類別後。您可以以表格格式查看產品列表,您可以單擊下一頁來循環該類別內的所有頁面。其實你只能看到1,2,3,4,5,最後一頁。

在類別中的第一個頁面的URL看起來像www.example.com/level1/level2/_/N-1,那麼第二個頁面會看起來像www.example.com/level1/level2/_/N-1/?No=100 ..等等的等等..

我個人沒有那麼多的JAVA編程經驗和我想知道

可以用我的Nutch抓取所有產品列表頁和存儲對於現在的HTML ..

,也許後來想出一個辦法來解析HTML/C數orrectly。

(1)可我只是修改conf/regex-urlfilter.txt,並用正確的東西取代

# accept anything else 
+. 

? (我只是不明白怎麼會

+^http://([a-z0-9]*\.)*nutch.apache.org/ 

僅限制Nutch的域名中的網址...,我會解釋這個正則表達式是雙斜線和Nutch的之間,有可能是任何字符字母數字或星號,反斜線或點..)

如何建立正則表達式所以只刮http://www.example.com/.../.../_/N-../...

(2)我可以看到HTML存儲在content文件夾內segment ...但是,當我在VI中打開該文件時,對我來說,這看起來完全是無稽之談。 ..我想知道,如果這是所謂的JAVA序列化,我需要在JAVA反序列化閱讀它。

請原諒我,如果這些問題太基本,並且非常感謝您的閱讀。

回答

2

(1)可我只是修改的conf /正則表達式,urlfilter.txt並更換

肯定。你應該替換+。與這些行:

#accept all products page 
+www\.example\.com/allproducts 

#accept categories pages 
+www\.example\.com/level1/level2/_/N- 

有關正則表達式在此文件中的一個重要說明:正則表達式部分匹配。所以,如果你寫像 「+ AB」 的規則意味着:接受包含 「AB」,因此它具有以下網址匹配

通過所有URL默認,nutch過濾網址? (因爲他們大多是動態頁面)。爲了防止這種情況,註釋此行的正則表達式,你-urlfilter.txt文件:

-[?*[email protected]=] 

(2)我可以看到HTML ...

Nutch的二進制格式保存文件。見https://stackoverflow.com/a/10150402/1881318