nutch-1.0如果不修改代码,导入进去是有两处错误的,下面是自己配置成功地方法。
- 配置cygwin的环境变量,这一步很重要,如果没有配置的话,后面就会出现"Failed to get the current user's information" 或者 'Login failed: Cannot run program "bash"'的错误。
- 新建一个工程,随便取个名字,选择"Create project from existing source",指向自己nutch-1.0的目录。
- 点击下一步,切换到"Libraries"选择"Add Class Folder..." 按钮,从列表中选择"conf"。
- 切换到"Order and Export"找到"conf",把它移到顶端。
- 切换到"Source"将output folder设置为Nutch /bin/tmp_build(这一步视自己情况而定),点击finish完成导入。
- 修改nutch-defaul.xml,nutch-site.xml,crawl-urlfilter.txt。
在nutch目录下,建立urls目录,在urls目录下,建立nutch初始爬取文件,格式为txt,文件名任意,里面设置搜索的站点起始位,如加入:
http://lucene.apache.org/nutch/
修改nutch下的conf/crawl-urlfilter.txt文件,将# accept hosts in MY.DOMAIN.NAME这行下的
MY.DOMAIN.NAME修改成你想抓取的域名,比如修改成下面这样的:
+^http://([a-z0-9]*/.)*apache.org/,表示要抓取apache的网页
conf/nutch-site.xml文件的http.agent.name,一定要定义值
<property>
<name>http.agent.name</name>
<value></value>///这里一定要定义
</property >
如果报NullPointerException,nutch-default.xml里面的http.agent.name也要定义。
nutch-site.xml里,还要定义搜索目录,即抓下来的程序放置的地方。
<property>
<name>searcher.dir</name>
<value>D:/website</value>
</property>
- 从http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-mp3/lib/,http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-rtf/lib/下载MP3跟rtf的jar文件,分别拷贝到src/plugin/parse-mp3/lib 和 src/plugin/parse-rtf/lib/文件夹下
- 刷新几下,右键选择工程文件夹,选择Build Path->Configure Build Path...在弹出的窗口上,切换到Libraries,选择Add Jars...,添加刚才下载的jar文件到工程。
- 到这一步,一般的工程都会有两个错误,nutch的official 1.0 release版本中,这两个问题因为licensing issues没有修复。接下来的就是最关键的部分了。
修改src/plugin/parse-rtf/src/java/org/apache/nutch/parse/rtf下RTFParseFactory.java
添加import org.apache.nutch.parse.ParseResult;
将public Parse getParse(Content content) {
改为public ParseResult getParse(Content content) {
将return new ParseStatus(ParseStatus.FAILED,
ParseStatus.FAILED_EXCEPTION,
e.toString()).getEmptyParse(conf);
改为return new ParseStatus(ParseStatus.FAILED,
ParseStatus.FAILED_EXCEPTION,
e.toString()).getEmptyParseResult(content.getUrl(), getConf());
将return new ParseImpl(text,
new ParseData(ParseStatus.STATUS_SUCCESS,
title,
OutlinkExtractor.getOutlinks(text, this.conf),
content.getMetadata(),
metadata));
改为return ParseResult.createParseResult(content.getUrl(),
new ParseImpl(text,
new ParseData(ParseStatus.STATUS_SUCCESS,
title,
OutlinkExtractor.getOutlinks(text, this.conf),
content.getMetadata(),
metadata)));
修改src/plugin/parse-rtf/src/test/org/apache/nutch/parse/rtf下的TestRTFParser.java
将parse = new ParseUtil(conf).parseByExtensionId("parse-rtf", content);
改为parse = new ParseUtil(conf).parseByExtensionId("parse-rtf", content).get(urlString);
到这一步,eclipse上面的工程就会没有错误了
- 选择Run->Run As->Java Application在弹出的Select Java Application上选择Crawl-org.apache.nutch.crawl,第一次运行由于没有设置参数,所以不会有什么,接下来,选择Run->Run Configurations…在左边的Java Application下面会有Crawl这一项,选择它,
切换到Arguments,Program Arguments的内容就是要设置的参数,填上urls -dir crawl -depth 3 -topN 50(这里视自己的具体情况而定,urls为链接)在VM arguments下面填上-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log
选择Run即可,一般的情况下,如果不出意外的话,运行没什么问题,可以看到抓取页面的过程,另外还有一个可能碰的问题,就是Java Heap Size的问题,查看logs/hadoop.log文件,如果出现类似java.lang.OutOfMemoryError: Java heap space语句,那么一般都是这个问题,Eclipse -> Window -> Preferences -> Java -> Installed JREs -> edit -> Default VM arguments
设置为-Xms5m –Xmx250m,其中Xms为最小内存,Xmx为最大内存。
Eclipse中编译nutch-1.0配置详解
最新推荐文章于 2024-08-12 11:47:35 发布