我想为nutch编写自己的HTML解析器插件。 我通过生成仅在特定xpath中下降的外链来进行聚焦爬行。 在我的用例中,我想根据当前爬网深度从html页面获取不同的数据。所以我需要知道我正在解析的每个内容的HtmlParser插件的当前深度。
Nutch可以吗?我看到CrawlDatum没有crawl_depth信息。 我想在另一个数据结构中有信息映射。 有没有人有更好的想法?
由于
答案 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解析器插件。