Nutch:获取插件中当前的爬网深度

时间:2010-08-20 12:34:38

标签: nutch

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

Nutch可以吗?我看到CrawlDatum没有crawl_depth信息。 我想在另一个数据结构中有信息映射。 有没有人有更好的想法?

由于

2 个答案:

答案 0 :(得分:2)

Crawl.java有NutchConfiguration对象。初始化所有组件时传递此对象。在创建新的Fetcher之前,我为抓取深度设置了属性。

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。 谢谢 Nayn

答案 1 :(得分:0)

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

在每个周期内,在它之前运行的数量或先前周期(“深度”)未知。这些信息没有保留。

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