2015-10-08 76 views
0

我建立了Nutch并为它提供了一个可以抓取的URL的种子列表。我对它进行了配置,以便它不会抓取我的种子列表之外的任何内容。种子名单包含150万个URL。我跟着引导和拉开序幕Nutch的,像这样:获取Nutch爬行状态?

bin/nutch inject crawl/crawldb urls 
bin/nutch generate crawl/crawldb crawl/segments 
s1=`ls -d crawl/segments/2* | tail -1` 
bin/nutch fetch $s1 
bin/nutch parse $s1 
bin/nutch invertlinks crawl/linkdb -dir crawl/segments 
bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb -linkdb crawl/linkdb $s1 -addBinaryContent -base64 

题外话:我真希望我能知道如何抓取,并在同一时间指数 (例如,抓取网页 - >指标吧,爬行未来页面), ,因为我目前必须等待整个抓取才能完成 ,然后再根本没有任何索引。

无论如何,从检查hadoop.log,我相信我已经在48小时内抓取了大约40k链接。不过,我想确保它能正确抓取所有内容。我还想看看哪些链接已被抓取,以及哪些链接已被删除。我已经阅读了所有的文档,我似乎无法弄清楚如何获得Nutch爬行的状态,除非它是作为一项工作开始的。

我使用Solr 4.10运行Nutch 1.10。

+1

>如何在同一时间 抓取和索引看一看[https://github.com/DigitalPebble/storm-crawler。 Nutch是批量驱动的,它可以一步一步完成任务。 [http://digitalpebble.blogspot.co.uk/2015/09/index-web-with-aws-cloudsearch.html]包含Nutch和SC之间的比较,您可能会觉得有用。 +1 Sujen建议关于nutch readdb命令。您可以指定给定的URL来获取其状态,但正如他指出的那样,这只会在爬行迭代结束时更新 –

回答

3

截至目前,您无法从日志中看到正在抓取的抓取状态。只有在fetch-parse-updatedb作业结束​​后才能查询crawldb。

我想你在运行bin/nutch solrindex之前缺少bin/nutch updatedb作业。

正如您所提到的,您似乎没有使用./bin/crawl脚本,而是单独调用每个作业。

对于像您一样大的抓取,我可以想到的一种方式是使用./bin/crawl脚本,默认情况下,该脚本会为每次迭代生成50k个URL。而且每次迭代之后,你可以使用:在给定https://wiki.apache.org/nutch/CommandLineOptions

./bin/nutch readdb <crawl_db> -stats 

命令检查crawldb状态。

如果要更频繁地检查更新,请在./bin/crawl脚本中更改(降低)'-topN'参数(传递给生成作业)。现在,通过改变迭代次数,您可以抓取整个种子列表。

希望这有助于:)