Eclipse中编译nutch-1.0配置详解

  1. nutch-1.0如果不修改代码,导入进去是有两处错误的,下面是自己配置成功地方法。 

  2. 配置cygwin的环境变量,这一步很重要,如果没有配置的话,后面就会出现"Failed to get the current user's information" 或者 'Login failed: Cannot run program "bash"'的错误。 
  3. 新建一个工程,随便取个名字,选择"Create project from existing source",指向自己nutch-1.0的目录。 
  4. 点击下一步,切换到"Libraries"选择"Add Class Folder..." 按钮,从列表中选择"conf"。
  5. 切换到"Order and Export"找到"conf",把它移到顶端。 
  6. 切换到"Source"将output folder设置为Nutch /bin/tmp_build(这一步视自己情况而定),点击finish完成导入。 
  7. 修改nutch-defaul.xml,nutch-site.xml,crawl-urlfilter.txt。 
  8. 在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>

     

  9. 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/文件夹下 
  10. 刷新几下,右键选择工程文件夹,选择Build Path->Configure Build Path...在弹出的窗口上,切换到Libraries,选择Add Jars...,添加刚才下载的jar文件到工程。 
  11. 到这一步,一般的工程都会有两个错误,nutch的official 1.0 release版本中,这两个问题因为licensing issues没有修复。接下来的就是最关键的部分了。 
  12. 修改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上面的工程就会没有错误了 

  13. 选择Run->Run As->Java Application在弹出的Select Java Application上选择Crawl-org.apache.nutch.crawl,第一次运行由于没有设置参数,所以不会有什么,接下来,选择Run->Run Configurations…在左边的Java Application下面会有Crawl这一项,选择它, 
  14. 切换到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为最大内存。

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值