gpt4 book ai didi

parsing - 如何在apache nutch中爬行提取html中特定div的值?

转载 作者:行者123 更新时间:2023-12-02 09:23:41 24 4
gpt4 key购买 nike

我用nutch 2.2爬行,我检索的数据是元标记,如何在apache nutch中爬行提取html中特定div的值

最佳答案

您必须编写一个插件来扩展HtmlParseFilter才能实现您的目标。

您可以使用一些 html 解析器(例如 Jsoup)来提取所需的 URL,并将它们添加为外链。

示例 HtmlParseFilter 实现:-

        public 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.
Document document = Jsoup.parse(content.toString(),content.getUrl());
Elements elements = document.select(<your_css_selector_query);
// modify/select only required outlinks
if (elements != null) {
Outlink outlink;
List<String> newLinks=new ArrayList<String>();
List<Outlink> outLinks=new ArrayList<Outlink>();
String absoluteUrl;
Outlink outLink;
for (Element element : elements){
absoluteUrl=element.absUrl("href");
if(includeLinks(absoluteUrl,value)) {
if(!newLinks.contains(absoluteUrl)){
newLinks.add(absoluteUrl);
outLink=new Outlink(absoluteUrl,element.text());
outLinks.add(outLink);
}
}
}
Parse parse = parseResult.get(content.getUrl());
ParseStatus status = parse.getData().getStatus();
Title title = document.title();
Outlink[] newOutLinks = (Outlink[])outLinks.toArray(new Outlink[outLinks.size()]);
ParseData parseData = new ParseData(status, title, newOutLinks, parse.getData().getContentMeta(), parse.getData().getParseMeta());
parseResult.put(content.getUrl(), new ParseText(elements.text()), parseData);
}
//return parseResult with modified outlinks
return parseResult;
}

使用ant构建新插件并在nutch-site.xml中添加插件。

<property>
<name>plugin.includes</name>
<value>protocol-httpclient|<custom_plugin>|urlfilter-regex|parse-(tika|html|js|css)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-elastic</value>
</property>

parser-plugins.xml 中,您可以使用自定义插件,而不是 tika 使用的默认插件,如下所示:-

<!--
<mimeType name="text/html">
<plugin id="parse-html" />
</mimeType>

<mimeType name="application/xhtml+xml">
<plugin id="parse-html" />
</mimeType>
-->

<mimeType name="text/xml">
<plugin id="parse-tika" />
<plugin id="feed" />
</mimeType>

<mimeType name="text/html">
<plugin id="<custom_plugin>" />
</mimeType>

<mimeType name="application/xhtml+xml">
<plugin id="<custom_plugin>" />
</mimeType>

关于parsing - 如何在apache nutch中爬行提取html中特定div的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39730069/

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