1. 介绍
参考官方文档
参考杨尚川的博客,我补充些可能遇到的问题
2. 插件组成
2.1 java源文件
根据杨尚川博客修改,然后引入几个包
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
2.2 plugin.xml
告诉Nutch这个插件的一些信息
<plugin
id="parse-jsoup"
name="Html Parse Plug-in"
version="1.0.0"
provider-name="nutch.org">
<runtime>
<library name="parse-jsoup.jar">
<export name="*"/>
</library>
<library name="tagsoup-1.2.1.jar"/>
<library name="jsoup-1.7.3.jar"/>
</runtime>
<requires>
<import plugin="nutch-extensionpoints"/>
</requires>
<extension id="org.apache.nutch.parse.html"
name="HtmlParse"
point="org.apache.nutch.parse.Parser">
<implementation id="org.apache.nutch.parse.html.HtmlParser"
class="org.apache.nutch.parse.html.HtmlParser">
<parameter name="contentType" value="text/html|application/xhtml+xml"/>
<parameter name="pathSuffix" value=""/>
</implementation>
</extension>
</plugin>
2.3 build.xml
ant编译插件
<project name="parse-jsoup" default="jar-core">
<import file="../build-plugin.xml"/>
<!-- Build compilation dependencies -->
<target name="deps-jar">
</target>
<!-- Add compilation dependencies to classpath -->
<path id="plugin.deps">
<fileset dir="${nutch.root}/build">
</fileset>
</path>
<!-- Deploy Unit test dependencies -->
<target name="deps-test">
<ant target="deploy" inheritall="false" dir="../nutch-extensionpoints"/>
</target>
</project>
2.4 ivy.xml
插件依赖管理
<ivy-module version="1.0">
<info organisation="org.apache.nutch" module="${ant.project.name}">
<license name="Apache 2.0"/>
<ivyauthor name="Apache Nutch Team" url="http://nutch.apache.org"/>
<description>
Apache Nutch
</description>
</info>
<configurations>
<include file="../../../ivy/ivy-configurations.xml"/>
</configurations>
<publications>
<!--get the artifact from our module name-->
<artifact conf="master"/>
</publications>
<dependencies>
<dependency org="org.ccil.cowan.tagsoup" name="tagsoup" rev="1.2.1"/>
<dependency org="org.jsoup" name="jsoup" rev="1.7.3"/>
</dependencies>
</ivy-module>
具体配置可以看官方文档,也可以看其他插件是怎么配的。
3. 修改nutch-site.xml文件,把插件加入
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-(html|tika)|index-(basic|anchor)|indexer-solr|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-jsoup</value>
</property>
4. 修改plugin/build.xml,添加你的插件
<ant dir="parse-jsoup" target="deploy"/>
<ant dir="parse-jsoup" target="test"/>
<ant dir="parse-jsoup" target="clean"/>
5. 修改parse-plugins.xml
<mimeType name="text/html">
<plugin id="parse-jsoup" />
</mimeType>
<alias name="parse-jsoup"
extension-id="org.apache.nutch.parse.html.HtmlParser" />
以前默认是parse-html
6. 重新ant编译,然后添加在class中添加插件,注意选择src/plugin/parse-jsoup/src/java目录,这样包名不会有错误,并在lib中添加
tagsoup-1.2.1.jar
nekohtml.jar
jsoup-1.7.3.jar
现在你就可以运行crawl,看看结果吧
"
content
":
"由我发起的JAVA开源项目:#APDPlat#应用级产品开发平台当选为#2013年度优秀开源项目#,在#第八届开源中国开源世界高峰论坛#上接受颁奖。\n\n双高证书(系统架构设计师、系统分析师)\n\n“分词”是语言理解的“前提”吗? - 杨尚川的博客 - ITeye技术网站 http://url.cn/Ly2FJv\n\nAPDPlat中的用户密码安全策略 - 杨尚川的博客 - ITeye技术网站 http://url.cn/OPCBjG\n\nNutch1.7二次开发培训讲义 之 腾讯微博抓取分析 - 杨尚川的博客 - ITeye技术网站 http://url.cn/Q6wxZ4\n\nNutch1.7二次开发培训讲义 - 杨尚川的博客 - ITeye技术网站 http://url.cn/KaVgnE\n\n【机器学习视频教程】“机器学习”是当今的大热门,“人工智能”、“大数据”等当今热门领域都离不开“机器学习”,给大家推荐一套非常棒的机器学习视频教程(总时长15个半小时,讲中文哦) (分享自 @QQ空间) http://url.cn/UNMwmK\n\nnew一个Object对象占用多少内存? - 杨尚川的博客 - ITeye技术网站 http://url.cn/JgVRtw\n\n编写正确的程序往往比一般人想象的难度要大的多,很多时候,程序是碰巧能运行,尤其是在多线程的情况下。\n\nJAVA调用CSDN接口发博文 - 杨尚川的博客 - ITeye技术网站 http://url.cn/QQFTvw\n\nCSDN博客飙升秘籍 - 杨尚川的个人页面 - 开源中国社区: 互联网时代,攻防是永恒的主题。为了获得用户眼球,抢占各类排行榜是一种行之有效的方法。本文介绍了一种CSDN博客飙升秘籍,可在短短一天内超过别人数年的努力。 http://url.cn/Ip0kug\n\nAPDPlat中的机器码生成机制 - 杨尚川的博客 - ITeye技术网站 http://url.cn/T31V7e\n\nAPDPlat如何自动建库建表并初始化数据? - 杨尚川的博客 - ITeye技术网站 http://url.cn/TJq2R1\n\nAPDPlat的系统启动和关闭流程剖析 - 杨尚川的博客 - ITeye技术网站 http://url.cn/VK0qUy\n\nAPDPlat拓展搜索之集成Solr - 杨尚川的博客 - ITeye技术网站 http://url.cn/OqgbDq\n\nAPDPlat拓展搜索之集成ElasticSearch - 杨尚川的博客 - ITeye技术网站 http://url.cn/P9sSVF\n\nAPDPlat中备份文件异地容灾机制之FTP上传 - 杨尚川的博客 - ITeye技术网站 http://url.cn/QgveGd\n\n"
, "
title
":
"杨尚川的微博_腾讯微博"
, "
segment
":
"20140312152056"
, "
boost
":
0.04689394
, "
digest
":
"0c8bed7e9776c890d778bbb705640967"
, "
tstamp
":
"2014-03-12T07:21:54.426Z"
, "
id
":
"http://t.qq.com/yang-shangchuan/?mode=0"
, "
url
":
"http://t.qq.com/yang-shangchuan/?mode=0"
, "
_version_
":
1462354646641148000