我已经设置了Nutch,并为其提供了一个抓取网址的种子列表。我对它进行了配置,使其不会抓取我的种子列表之外的任何内容。种子列表包含约150万个网址。我跟着导游一起踢了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。
答案 0 :(得分:4)
截至目前,在从日志中提取数据时,您无法看到抓取的状态。只有在fetch-parse-updatedb作业结束后才能查询crawldb。
我认为你在运行bin / nutch solrindex之前缺少bin / nutch updatedb作业。
正如您所提到的,您似乎没有使用./bin/crawl脚本,而是单独调用每个作业。
对于与您一样大的爬网,我能想到的一种方法是使用./bin/crawl脚本,默认情况下,每次迭代生成50k url用于获取。每次迭代后,您都可以使用:
./bin/nutch readdb <crawl_db> -stats
在https://wiki.apache.org/nutch/CommandLineOptions处给出的命令用于检查crawldb状态。
如果要更频繁地检查更新,请在./bin/crawl脚本中更改(降低)'-topN'参数(传递给生成作业)。现在,通过改变迭代次数,您可以抓取整个种子列表。
希望这会有所帮助:)