gpt4 book ai didi

nutch - 如何在爬行时制作 Apache Nutch 索引

转载 作者:行者123 更新时间:2023-12-04 05:37:38 29 4
gpt4 key购买 nike

我开始使用 Apache Nutch (v1.5.1) 来索引某个域下的所有网站。
我的域中有大量网站(以百万计),我需要逐步将它们编入索引,而不是等待整个过程结束。

我在 nutch wiki(这里 http://wiki.apache.org/nutch/NutchTutorial/#A3.2_Using_Individual_Commands_for_Whole-Web_Crawling)中发现了这个应该可以工作的东西。这个想法是让一个脚本女巫循环调用我的过程中的每一步(爬行、获取、解析,...)对一定数量的数据(例如 1000 个 URL)。

bin/nutch inject crawl/crawldb crawl/seed.txt

bin/nutch generate crawl/crawldb crawl/segments -topN 25
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1

bin/nutch fetch $s1
bin/nutch parse $s1
bin/nutch updatedb crawl/crawldb $s1

bin/nutch generate crawl/crawldb crawl/segments -topN 25
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2

bin/nutch fetch $s2
bin/nutch parse $s2
bin/nutch updatedb crawl/crawldb $s2

...

bin/nutch invertlinks crawl/linkdb -dir crawl/segments
bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/*

我的问题是:有什么方法可以将这个设置直接指定到 Nutch 中,并让他以并行和更透明的方式做这些事情?例如在分离的线程上?

感谢您的回答。

更新

我试图创建脚本(代码在上面),但不幸的是我在反向链接阶段出现错误。这是输出:
LinkDb: starting at 2012-07-30 11:04:58
LinkDb: linkdb: crawl/linkdb
LinkDb: URL normalize: true
LinkDb: URL filter: true
LinkDb: internal links will be ignored.
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625
...
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704095730

LinkDb: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:
file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927/parse_data

Input path does not exist:
file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625/parse_data
...

感谢您的帮助。

最佳答案

(如果我有足够的代表,我会将其作为评论发布)。

请记住,-depth 开关指的是 EACH CRAWL,而不是它将抓取的站点的整体深度。这意味着第二次运行 depth=1 将从已经索引的数据下降一级,并在 topN 文档处停止。

因此,如果您不急于完全填充数据,我在类似情况下通过执行大量重复的浅 nutch 爬网语句(使用 smallish -depth (3-5) 和-topN (100-200) 个变量)来自一个大的种子列表。这将确保每个批次中只有 (depth * topN) 页面被索引,并且索引将在几分钟内开始提供 URL。

然后,我通常将爬网设置为每(1.5 * 初始爬网时间平均值)秒触发一次并让它爬行。可以理解,每次爬取只有 1,000 个文档,通过大型基础设施可能需要很多时间,并且(在索引、暂停时间和其他开销之后)该方法可以成倍地爬取整个堆栈的时间。

最初几次通过基础设施,这是一个非常糟糕的过程。然而,随着自适应爬行算法开始发挥作用,重新爬行时间开始接近合理值:包裹开始真正交付。

(这有点类似于您在 nutch wiki 中提到的“whole web crawling ”方法,它建议您将数据分成 1,000 个页面段,但对于初学者来说更简洁易懂。)

关于nutch - 如何在爬行时制作 Apache Nutch 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11717179/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com