如何使用nutch插件解析位于特定HTML标记中的内容?
问题描述:
我正在使用Nutch来抓取网站,我想解析Nutch抓取的html页面的特定部分。例如,如何使用nutch插件解析位于特定HTML标记中的内容?
<h><title> title to search </title></h>
<div id="abc">
content to search
</div>
<div class="efg">
other content to search
</div>
我想解析ID为“abc”和class =“efg”的div元素等等。
我知道我必须创建一个自定义解析插件,因为Nutch提供的htmlparser插件可以移除所有的html标签,css和javascript内容,只留下文本内容。我提到这个博客http://sujitpal.blogspot.in/2009/07/nutch-custom-plugin-to-parse-and-add.html,但我发现这是用html标签解析,而我想解析具有特定值的属性的html标签。我发现杰里科已被提及可用于解析特定的html标签,但我可以找到与杰里科有关的nutch插件的任何示例。
我需要了解如何设计用于与具有特定值属性标记的基础上,解析HTML页面的战略一定的指导意义。
答
你可以使用这个插件基于CSS规则来提取网页数据:
https://github.com/BayanGroup/nutch-custom-search
在您的例子,你可以用这种方式进行配置:
<config>
<fields>
<field name="custom_content" />
</fields>
<documents>
<document url=".+" engine="css">
<extract-to field="custom_content">
<text>
<expr value="#abc" />
</text>
<text>
<expr value=".efg" />
</text>
</extract-to>
</document>
</documents>
</config>
当我试图上面的例子在'extractors.xml'中,那么Nutch不会索引到Solr。如果我工作,如果我删除任何一个''元素。该插件不会接受多个''元素? –
此插件不适用于Nutch最新版本,即2.X版本 – horro