【问题标题】:How to select data from specific tags in nutch如何从 nutch 中的特定标签中选择数据
【发布时间】:2016-08-04 12:52:09
【问题描述】:

我是 Apache Nutch 的新手,我想知道是否可以抓取网页的选定区域。例如,选择特定的div 并仅抓取该div 中的内容。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • 从技术上讲,爬虫总是会加载整个页面。您如何处理内容取决于您。
  • 如果是这样,我如何选择特定标签下的内容进行下一轮抓取?
  • 爬取特定的 div 是什么意思?您只想提取此 div 内的 URL?还是只索引 div 的内容?
  • 我想提取特定 div 中的所有链接并抓取它们然后索引。
  • @JorgeLuis:这有什么?

标签: web-scraping web-crawler nutch


【解决方案1】:

您必须编写一个 plugin 来扩展 HtmlParseFilter 以实现您的目标。

我认为您将自己做一些事情,例如解析 html 的特定部分,提取您想要的 URL 并将它们添加为外链接。

HtmlParseFilter 实现:(下面的代码给出了大致思路)

ParseResult filter(Content content, ParseResult parseResult, HTMLMetaTags metaTags, DocumentFragment doc){
    // get html content
    String htmlContent = new String(content.getContent(), StandardCharsets.UTF_8);
    // parse html using jsoup or any other library.
    String url = content.getUrl();
    Parse parse = parseResult.get(url);
    ParseData parseData = parse.getData();
    Outlink[] links = parseData.getOutlinks();
    // modify/select only required outlinks
    // return ParsePesult with modified outlinks
    return parseResult;
}

希望这会有所帮助。

如果您是插件新手,我编写了一个简单的插件“nutch-fetch-page”,它使用HtmlParseFilter 接口将html 页面和文本内容保存在本地驱动器上。您可以分叉/下载和修改代码。

【讨论】:

  • 你能添加如何使用 jsoup 设置选定的外链吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多