『壹』 如何自定义nutch htmlparse插件
在conf/nutch-site.xml加入http.agent.name的属性
生成一个种子文件夹,mkdir -p urls,在其中生成一个种子文件,在这个文件中写入一个url,如http://nutch.apache.org/
编辑conf/regex-urlfilter.txt文件,配置url过滤器,一般用默认的好了,也可以加入如下配置,只抓取nutch.apache.org这个网址 +^http://([a-z0-9]*.)*nutch.apache.org/
使用如下命令来抓取网页
bin/nutch crawl urls -dir crawl -depth 3 -topN 5 说明: -dir 抓取结果目录名 -depth 抓取的深度 -topN 最一层的最大抓取个数 一般抓取完成后会看到如下的目录 crawl/crawldb crawl/linkdb crawl/segments
使用如下来建立索引
bin/nutch solrindex http://127.0.0.1:8983/solr/ crawldb -linkdb crawldb/linkdb crawldb/segments/* 使用这个命令的前提是你已经开启了默认的solr服务 开启默认solr服务的命令如下 cd ${APACHE_SOLR_HOME}/example java -jar start.jar 这个时候服务就开启了 你可以在浏览器中输入如下地址进行测试 http://localhost:8983/solr/admin/ http://localhost:8983/solr/admin/stats.jsp
但是要结合Nutch来使用solr,还要在solr中加一个相应的策略配置,在nutch的conf目录中有一个默认的配置,把它复制到solr的相应目录中就可以使用了 cp ${NUTCH_RUNTIME_HOME}/conf/schema.xml ${APACHE_SOLR_HOME}/example/solr/conf/ 这个时候要重新启动一下solr
索引建立完成以后就你就可以用关键词进行查询,solr默认返回的是一个xml文件
『贰』 在cygwin中用cd /cygdrive/d/ProgramFiles/nutch说这个文件不存在,但是我的nutch确实在这里
因为CYGWIN中的目录结构不支持空格,如果一定要用的话试试cd “/cygdrive/d/ProgramFiles/nutch”
『叁』 如何安装nutch1.1到MyEclipse6.5
首先说明一下,由于下载太大,我没有试过。下面根据一些经验与它的文档猜测的。
你要把nutch装到myeclipse做啥?
编译它,还是使用它?
如果只是用nutch的话,那么完全不需要myeclipse,仅需JDK、Tomcat、cygwin。
如果要编译nutch的话,一般它也建议直接用ant来编译的,只有你想调试它时才需要myeclipse。
从1.1开始,它同时发布已经编译好的包了,各个压缩包用处如下:
apache-nutch-1.1-bin.tar.gz:已经编译好的包,用于linux/unix
apache-nutch-1.1-bin.zip: 已经编译好的包,用于windows
apache-nutch-1.1-src.tar.gz:源代码,用于linux/unix
apache-nutch-1.1-src.zip: 源代码,用于windows
*.asc:校验文件,没啥用。
所以,如果要安装nutch,只需下载apache-nutch-1.1-bin.zip,然后解压到某个目录下。(有160M这么大,估计包含了tomcat了吧)
好像0.9与1.0都需要编译的,下载下来直接运行ant即可
然后在那个目录下建个urls文件,里面写上所需爬的最上层网址,如:http://lucene.apache.org/nutch/
然后运行 bin/nutch crawl urls -dir crawl -depth 3
这样就会将索引存放在crawl目录下了。
要想检索,那么需要将nutch*.war部署到tomcat,然后启动。
(我认为1.1-bin.zip中已经包含了tomcat,无需再次部署的,可以直接启动,可惜还没有下载,不清楚呀)
『肆』 开源爬虫框架各有什么优缺点
首先爬虫框架有三种
分布式爬虫:Nutch
JAVA单机爬虫:Crawler4j,WebMagic,WebCollector
非JAVA单机爬虫:scrapy
海量URL管理
网速快
Nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫。Nutch运行的一套流程里,有三分之二是为了搜索引擎而设计的。对精抽取没有太大的意义。
用Nutch做数据抽取,会浪费很多的时间在不必要的计算上。而且如果你试图通过对Nutch进行二次开发,来使得它适用于精抽取的业务,基本上就要破坏Nutch的框架,把Nutch改的面目全非。
Nutch依赖hadoop运行,hadoop本身会消耗很多的时间。如果集群机器数量较少,爬取速度反而不如单机爬虫。
Nutch虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的功能。但是开发过Nutch插件的人都知道,Nutch的插件系统有多蹩脚。利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精抽取系统了。
Nutch并没有为精抽取提供相应的插件挂载点。Nutch的插件有只有五六个挂载点,而这五六个挂载点都是为了搜索引擎服务的,并没有为精抽取提供挂载点。大多数Nutch的精抽取插件,都是挂载在“页面解析”(parser)这个挂载点的,这个挂载点其实是为了解析链接(为后续爬取提供URL),以及为搜索引擎提供一些易抽取的网页信息(网页的meta信息、text)
用Nutch进行爬虫的二次开发,爬虫的编写和调试所需的时间,往往是单机爬虫所需的十倍时间不止。了解Nutch源码的学习成本很高,何况是要让一个团队的人都读懂Nutch源码。调试过程中会出现除程序本身之外的各种问题(hadoop的问题、hbase的问题)。
Nutch2的版本目前并不适合开发。官方现在稳定的Nutch版本是nutch2.2.1,但是这个版本绑定了gora-0.3。Nutch2.3之前、Nutch2.2.1之后的一个版本,这个版本在官方的SVN中不断更新。而且非常不稳定(一直在修改)。
支持多线程。
支持代理。
能过滤重复URL的。
负责遍历网站和下载页面。爬js生成的信息和网页信息抽取模块有关,往往需要通过模拟浏览器(htmlunit,selenium)来完成。
先说python爬虫,python可以用30行代码,完成JAVA
50行代码干的任务。python写代码的确快,但是在调试代码的阶段,python代码的调试往往会耗费远远多于编码阶段省下的时间。
使用python开发,要保证程序的正确性和稳定性,就需要写更多的测试模块。当然如果爬取规模不大、爬取业务不复杂,使用scrapy这种爬虫也是蛮不错的,可以轻松完成爬取任务。
bug较多,不稳定。
『伍』 怎么使用nutch创建索引
一个是schema.xml,在其中的fields标签下加入如下代码:
Java代码
<field name="test1" type="date" stored="true" indexed="true"/>
lt;field name="test2" type="string" stored="true" indexed="true"/>
其中的stored表示这个字段的值要存储在lucene的索引中
其中的indexed表示这个字段的值是不是要进行分词查询
还有一个是solrindex-mapping.xml文件,这个文件的作用是把索引过滤器中生成的字段名与schema.xml中的做一个对应关系,要在其fields标签中加入如下代码:
Java代码
<field dest="test1" source="fetchTime"/>
<field dest="test2" source="metadata"/>
这样自定义索引过滤插件就算完成了,记得这里的schema.xml文件是在solr/conf目录下的,修改以后要重启一下,不知道solr支不支持修改了配置文件后不重启就可以生效。
bin/nutch solrindex http://localhost:8080/solr/ crawldb -linkdb crawldb/linkdb crawldb/segments/*
solr的索引文件在solr/data/index中,你可以用luke这个工具加开其索引文件,看一下其中的一些元信息,这个时候你就应该可以看到test1与test2这两个字段了.
『陆』 有木有Nutch相关框架视频教程2_杨尚川_281032878@种子下载,
Nutch相关框架视频教程2_杨尚川_281032878@种子下载地址: