好的,我已经问了这个,但我想我没有问过stackoverflow预期的方式。希望这次能得到更多的运气和答案。
我正在尝试运行nutch来抓取此网站:http://www.tigerdirect.com/
我希望它抓取该网站和所有子链接。
问题是它不起作用。在我的reg-ex文件中,我尝试了几个方面,但没有一个工作:
+^http://([a-z0-9]*\.)*tigerdirect.com/
+^http://tigerdirect.com/([a-z0-9]*\.)*
我的urls.txt是:
http://tigerdirect.com
基本上我想要完成的是抓取他们网站上的所有产品页面,这样我就可以创建一个搜索引擎(我使用solr)的电子产品。最终我想抓住bestbuy.com,newegg.com和其他网站。
顺便说一句,我从这里开始遵循教程:http://wiki.apache.org/nutch/NutchTutorial我正在使用会话3.3中提到的脚本(修复了它之后的错误)。我有java和android和bash的背景,所以这对我来说有点新鲜。我曾经在5年前用perl做正则表达式,但这一切都被遗忘了。
谢谢!
答案 0 :(得分:4)
根据您的评论,我发现您之前已抓过一些内容,这就是您的Nutch开始抓取维基百科的原因。
当您使用Nutch抓取内容时,它会在表中记录一些元数据(如果您使用Hbase,则它是一个名为网页的表)当您完成爬网并启动一个新表时,该表将被扫描并且是否有记录一个metada说“这个记录可以再次获取,因为接下来的获取时间已经过去了”Nutch开始获取那些网址以及你的新网址。
因此,如果您想在系统中抓取http://www.tigerdirect.com/,则必须先清理该表。如果你使用Hbase启动shell:
./bin/hbase shell
并禁用表格:
disable 'webpage'
最后放弃它:
drop 'webpage'
我可以截断该表但删除它。
接下来就是将它放入你的seed.txt:
http://www.tigerdirect.com/
打开位于以下位置的regex-urlfilter.txt:
nutch/runtime/local/conf
将该行写入其中:
+^http://([a-z0-9]*\.)*www.tigerdirect.com/([a-z0-9]*\.)*
您将放置该行而不是+.
我已经表示要抓取tigerdirect的子域名,这取决于你。
之后,您可以将其发送到solr索引并对其进行搜索。我已经尝试过并且可以正常工作,但是你可能会在Nutch方面遇到一些错误,但这是另一个需要讨论的话题。
答案 1 :(得分:1)
你的两个正则表达式都有一个/,但你的网址没有。
http://tigerdirect.com/
将匹配,http://tigerdirect.com
不会。
+^http://tigerdirect.com/([a-z0-9]*\.)*
尝试在parens内移动尾部斜线
+^http://tigerdirect.com(/[a-z0-9]*\.)*