在Linux下装nutch,编译已成功,执行Fetchernutch抓取指定内容命令后抓不到东西,哪路大神可以帮忙解决,感激不尽!!

Linux安全网 --- 专注Linux操作系统安全运维。
1. Fetcher模块的简单介绍
Fetcher这个模块在Nutch中有单独一个包在实现,在org.apache.nutch.fetcher,其中有Fetcher.java, FetcherOutput 和FetcherOutputFoat来组成,看上去很简单,但其中使用到了多线程,多线程的生产者与消费者模型,MapRuce的多路径输出等方法。下面我们来看一下Fetcher的注释,从中我们可以得到很多有用的信息。首先,这是一种基于队列的fetcher方法,它使用了一种经典的线程模型,生产者(a-QueueFeeder)与消费者(many-FetcherThread)模型,注意,这里有多个消费者。生产者从Generate产生的fetchlists中分类得到一批FetchItemQueue,每一个FetchItmeQueue都是由一类相同host的FetchItem组成,这些FetchItem是用来描述被抓取的对象。当一个FetchItem从FetchItemQueue中取出后,QueueFeeder这个生产者会不断的向队列中加入新的FetchItem,直到这个队列满了为止或者已经没有fetchlist可读取,当队列中的所有FetchItem都被抓取完成后,所有抓取线程都会退出运行。每一个FetchItemQueue都有一套自己的抓取策略,如最大的并行抓取个数,两次抓取的间隔等,如果当FetcherThread向队列申请一个FetchItem时,FetchItemQueue发现当前的FetchItem没有满足抓取策略,那这里它就会返回null,表达当前FetchItem还没有准备好被抓取。如果这些所有FetchItem都没有准备好被抓取,那这时FetchThread就会进入等待状态,直到条件满足被促发或者是等待超时,它会认为任务已经被挂起,这时FetchThread会自动退出。
2. FetcherOutputFormat的介绍
这个类是用来把FetcherOutput对象切分到不同的Map文件中的,也就是说它会根据对象的类型来判断输出到哪一个文件中,这里用到了一个多文件的输出。FetcherOutputFormat继承自MapRece框架的OutputFormat模板,其输出的&key,value&类型为&Tt,NutchWritable&。这里的OutputFormat定义了Map-Reduce任务的输出描述,Map-Reduce框架依赖任务的OutputFormat来做如下二件事情,一是用来验证输出源的可用性,如是否已经建立了相应的目录,数据库是否已经连上;另一件事是提供RecordWriter抽象来对数据进行写出到特定的数据源,一般输出文件定义在FileSystem里面。FetcherOutputFormat主要是实现了getRecordWriter这个方法,用于得到相应的数据写出对象,我们来分析一下其源代码:
public&RecordWriter&Text,&NutchWritable&&getRecordWriter(final&FileSystem&fs,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&final&JobConf&job,&&
最新图文资讯
相关文章列表:
理智评论文明上网,拒绝恶意谩骂
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明1172人阅读
linux管理(53)
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/cyberneko/html/parsers/DOMFragmentParser
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:232)
at java.util.concurrent.FutureTask.get(FutureTask.java:91)
at org.apache.nutch.parse.ParseUtil.runParser(ParseUtil.java:164)
at org.apache.nutch.parse.ParseUtil.parse(ParseUtil.java:88)
at org.apache.nutch.fetcher.Fetcher$FetcherThread.output(Fetcher.java:900)
at org.apache.nutch.fetcher.Fetcher$FetcherThread.run(Fetcher.java:662)
原因:(1)在win7下编译的项目移植到linux下不兼容导致的。(2)而且我的win7默认是GDK编码格式,linux下不支持这种格式。(3)项目在eclipse中编辑的时候,我将nutch配置文件nutch-default.xml中的plugin.folders配置属性改动为./src/plugin,所以需要重新修改为plugins。
解决方案:首先在eclipse中将项目修改为UTF-8编码格式,然后将win7下编译的.class文件删除掉,我的是在conf配置文件夹下(有org和conf两个编译文件夹),修改nutch-default.xml配置文件的plugin.folders属性,值改为plugins,最后将项目移植到linux下,使用ant对项目重新进行编译,程序不再出现异常。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:881434次
积分:9367
积分:9367
排名:第1152名
原创:188篇
转载:234篇
评论:92条
(4)(4)(12)(1)(1)(6)(3)(7)(2)(8)(27)(8)(7)(4)(11)(29)(19)(25)(9)(5)(5)(8)(8)(4)(4)(32)(17)(6)(3)(3)(25)(4)(8)(9)(9)(21)(12)(9)(3)(8)(4)(1)(18)(6)(2)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 nutch 抓取网页内容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信