0

我想为 nutch 编写自己的 HTML 解析器插件。我通过生成仅落在特定 xpath 中的外链来进行集中爬行。在我的用例中,我想根据当前的爬网深度从 html 页面中获取不同的数据。所以我需要知道我正在解析的每个内容的 HtmlParser 插件的当前深度。

Nutch可以吗?我看到 CrawlDatum 没有 crawl_depth 信息。我正在考虑在另一个数据结构中使用信息图。有人有更好的主意吗?

谢谢

4

2 回答 2

2

Crawl.java 有 NutchConfiguration 对象。在初始化所有组件时传递此对象。我在创建新的 Fetcher 之前设置了 crawl-depth 的属性。

conf.setInt("crawl.depth", i+1);
new Fetcher(conf).fetch(segs[0], threads,
          org.apache.nutch.fetcher.Fetcher.isParsing(conf));  // fetch it

HtmlParser 插件可以按如下方式访问它:

LOG.info("Current depth: " + getConf().getInt("crawl.depth", -1));

这并不强迫我打破 map-reduce。谢谢奈恩

于 2010-08-23T11:18:58.807 回答
0

对于 Nutch,“深度”表示连续运行的生成/获取/更新周期数。例如,如果您处于深度 4,则意味着您处于第四个周期。当你说你不想超过深度 10 时,这意味着你想在 10 个循环后停止。

在每个循环中,在它之前运行的数量或先前的循环(“深度”)是未知的。不保留该信息。

如果您有自己的 Crawl.java 版本,您可以跟踪当前的“深度”并将该信息传递给您的 HTML 解析器插件。

于 2010-08-20T13:12:06.303 回答