我正在关注教程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中反序列化才能读取它。
请原谅我,如果这些问题太基础,并且非常感谢阅读。
答案 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