2013-12-17 59 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