如何让nutch抓出来的2进制数据变为纯文本数据

如何让nutch抓出来的2进制数据变为纯文本数据,第1张

bin/nutch readseg –dump crawl/纯携清segments/20070516154114 segdb

这样会产生一个 dump 文件,这是一次抓取循环的结果,如果要查看其他

文件夹下抓取的结果,只要更改最后那个以时间命名隐启的文件夹就做前可以了。

前提条件:配置ant

1. 下载nutch(例如:我的是apache-nutch-2.2.1-src.tar.gz)

解压,重命名nutch文件夹(命名为nutch),然后移动文件夹到/home文件夹下

2. 编译nutch

cd nutch

ant

2.1 你可能会遇到这种错误:

Trying to override old definition of task javac

 [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

ivy-probe-antlib:

ivy-download:

 [taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

原因:缺少相应的jar文件

解决方法:

(1)下载sonar-ant-task-2.1.jar,并放到nutch文件夹目录下

(2)修改build.xml文件,从而引入这个新的jar

<!-- Define the Sonar task if this hasn't been done in a common script -->

<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"败备棚>

   <classpath path="${ant.library.dir}" />

   <classpath path="${mysql.library.dir}" />

   <classpath><fileset dir="." includes="察则sonar*.jar" /></classpath>

</taskdef>

        //找到相应的地方,增加多出的内容即可。

2.2 编译时间过长

nutch使用ivy进行构建,故编译时间长。如果时间过长,可使用该办法解滚帆决。

修改该文件:ivy/ivysettings.xml

http://mirrors.ibiblio.org/maven2/

替换

http://repo1.maven.org/maven2/

2.3 编译之后的目录:

3. 修改nutch配置文件

Nutch2.x版本存储采用Gora访问Cassandra、HBase、Accumulo、Avro等,需要在该文件中制定Gora属性。

 3.1修改 conf/nutch-site.xml

<property>

 <name>storage.data.store.class</name>

 <value>org.apache.gora.hbase.store.HBaseStore</value>

 <description>Default class for storing data</description>

</property>

 3.2 修改 ivy/ivy.xml

<!-- Uncomment this to use HBase as Gora backend. -->

<dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />

 3.3 修改 conf/gora.properties

gora.datastore.default=org.apache.gora.hbase.store.HBaseStore

配置nutch

(nutch文件夹已在/home目录下)

1. 修改系统环境变量

sudo gedit /etc/profile

//增加

#set nutch

export PATH=/home/nutch/runtime/local/bin:$PATH

2. 测试(nutch/runtime/local/bin中./nutch  &  ./crawl)

Nutch默认只给用户提供一种是用虚樱旦方法就是用一个cygwin的模拟器去模拟一个的环境,然后用户去用命令行在cygwin中执行搜索,还有就是当开发者把nutch的源代码导入到eclipse的工程目录下然后执行

org.apache.nutch.crawl.Crawl类的main()这两种方法只是适合程差扰序员做调试的时候手动开启,所以在二次开发nutch的时候就要把crawl放到在jsp中去调用,

步骤

1:新建一个web工程,把nutch源代码中plugins文件夹下的目录复制到src下,把nutch下src/java 中的这些包复制src下

2:把nutch中conf文件夹的所有配置文件复制到src目录下,把nutch中nutch.job文件复制到src下边

3 把nutch中lib文件夹的jar文件复制到web-inf的lib下

4 重新在src下建立一个类,用这个类去调用crawl的main()

package valley.testimport org.apache.nutch.crawl.Crawlpublic class test {public static void main(String[] args) {String []arg ={"url.txt","-dir","crawled","-depth","10","-topN","50"}try {Crawl.main(arg)} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace()}}}

3 接下来就可以在jsp中去调用这个test类了,一般在调用的时候都颂耐会出现一个异常-Xms100m -Xmx800m 异常代码如下Injector: Converting injected urls to crawl db entries.

java.io.IOException: Job failed!at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232)at org.apache.nutch.crawl.Injector.inject(Injector.java:160)at org.apache.nutch.crawl.Crawl.main(Crawl.java:113)at valley.test.test.main(test.java:10)at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:79)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)at java.lang.Thread.run(Thread.java:619)

这是因为tomcat的内存不够引起的具体解决办法不在罗嗦,不要忘记修改src下配置文件,如何修改和nutch中修改相同。

最后肯定感觉很奇怪,没什么没有说url.txt放在那个位置, url.txt一定要放在tomcat/bin 下,你爬取的文件也会自动存放在bin下具体原因我也搞不明白,这些的前提是如果你使用tomcat做web服务,项目的jdk一定要使用jdk1.6不然是编译 不通过的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12279303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存