regex - Nutch 正则表达式没有按照我想要的方式爬行

标签 regex search-engine nutch

好吧,我已经问过这个问题了,但我想我没有按照 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我正在使用 session 3.3 中提到的脚本(修复了它的错误后)。

我有 java、android 和 bash 背景,所以这对我来说有点新鲜。 5 年前我曾经在 Perl 中做过正则表达式,但这一切都被遗忘了。

谢谢!

最佳答案

根据您的评论,我看到您之前抓取过一些内容,这就是您的 Nutch 开始抓取维基百科的原因。

当您使用 Nutch 抓取某些内容时,它会在表中记录一些元数据(如果您使用 Hbase,则它是一个名为网页的表)。当您完成抓取并开始新的抓取时,会扫描该表,如果有一条记录包含元数据显示“可以再次获取该记录,因为下一次获取时间已过”,Nutch 开始获取该 url 以及您的新 url。

所以如果你只想 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 方面可能会遇到一些错误,但这是另一个要讨论的话题。

关于regex - Nutch 正则表达式没有按照我想要的方式爬行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16109633/

相关文章:

regex - 检查字符串的正则表达式是特定格式

java - 非阻塞匹配器查找

java - 错误 org.apache.hadoop.hbase.regionserver.LeaseException

linux - 在 Linux 上作为后台进程运行时 Nutch 爬网失败

hadoop - 是否可以将map-reduce的输出直接输出到多个Map文件?

javascript - 第三位小数为 0 或 5 的正则表达式十进制数

r - 在 R 中,从字符串中删除除最后一个之外的所有点

html - 语义分割和旁白广告标题的影响

javascript - google.setOnLoadCallback(initialize) 函数到底是什么意思?

php - 实现搜索静态页面的站点搜索引擎