Nutch域正则表达式

时间:2013-12-17 17:19:27

标签: regex nutch

我正在关注教程here,尝试针对网站构建机器人。

我在包含所有产品类别的页面中。说它是www.example.com/allproducts

潜入每个类别后。您可以以表格格式查看产品列表,并可以单击下一页以遍历该类别中的所有页面。实际上你只能看到最后一页的1,2,3,4,5。

该类别中的第一页的网址看起来像www.example.com/level1/level2/_/N-1,然后第二页看起来像www.example.com/level1/level2/_/N-1/?No=100 ..所以就这样......

我个人没有那么多JAVA编程经验,我想知道

我可以使用Nutch抓取所有产品列表页面并暂存HTML ..

以后可能会找到一种正确解析html / index的方法。

(1)我可以修改conf/regex-urlfilter.txt并替换

# accept anything else
+. 

有什么正确的吗? (我只是不明白怎么可能

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

仅限制Nutch域内的URL ...,我将该正则表达式解释为双斜杠和nutch之间,可能有任何字符为字母数字或星号,反斜杠或点..)

如何构建正则表达式,以便仅抓取http://www.example.com/.../.../_/N-../...

(2)我可以看到HTML存储在content内的segment文件夹中...但是,当我在VI中打开该文件时,它对我来说完全看起来像废话..我想知道这是否是所谓的JAVA序列化,我需要在JAVA中反序列化才能读取它。

请原谅我,如果这些问题太基础,并且非常感谢阅读。

1 个答案:

答案 0 :(得分:2)

  

(1)我可以修改conf / regex-urlfilter.txt并替换

不确定。你应该替换+。用这些线:

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

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

关于此文件中正则表达式的一个重要注意事项:正则表达式部分匹配。因此,如果您编写类似“+ ab”的规则,则表示:接受包含“ab”的所有网址,以便与这些网址匹配

默认情况下,nutch过滤网址为? (因为他们大多是动态页面)。要防止这种情况,请在regex-urlfilter.txt文件中注释此行:

-[?*!@=]
  

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

Nutch以二进制格式保存文件。见https://stackoverflow.com/a/10150402/1881318