荐 《Nutch笔记》Nutch-1.7+solr-4.7集成

2019-03-27 01:22|来源: 网路

一、下载安装nutch

下载地址

http://apache.fayea.com/apache-mirror/nutch/1.7/apache-nutch-1.7-bin.tar.gz

安装

[root@centos data]# cd /data/
[root@centos data]# mkdir nutch
[root@centos data]# tar -zxvf apache-nutch-1.7-bin.tar.gz
我的是root用户,如果不是的话
[root@centos nutch]# chmod +x apache-nutch-1.7

将nutch加入PATH环境变量中。

[root@centos nutch]# vim /etc/profile
export NUTCH_HOME=/data/nutch/apache-nutch-1.7
export PATH=$PATH:$NUTCH_HOME/bin

执行

[root@centos nutch]# nutch 
Usage: nutch COMMAND
where COMMAND is one of:

二、 抓取网站

假如我想抓取http://www.amazon.cn/
修改抓取url正则,仅允许抓amazon.cn上的内容。

[root@centos apache-nutch-1.7]# vim conf/regex-urlfilter.txt

 修改

# accept anything else
+.

+^http://([a-z0-9]*\.)*amazon.cn/

如果不限制的话就不需要修改

新建urls目录,用于存放首要抓取的url列表

[root@centos apache-nutch-1.7]# mkdir urls
[root@centos apache-nutch-1.7]# vim urls/seed.txt

写入

http://www.amazon.cn/

如果多个的话每一行写一个url

接下来给爬行蜘蛛取个名字

[root@centos apache-nutch-1.7]# vim conf/nutch-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>http.agent.name</name>
  <value>Liu.Xun Nutch Spider</value>
</property>
</configuration>

三、与solr集成

solr安装之前有介绍了

http://my.oschina.net/liuxundemo/blog/208236

1、将nutch的schema替换原solr自带的schema。

2、首先在solr里面新建一个nutch的core。首先复制一份collection1为nutch-core,删掉nutch-core里面的core.properties,然后到solr管理界面去Add Core,名字要和nutch-core文字一致

3、将nutch的schema替换原solr自带的schema

[root@centos solrhome]# cp /data/nutch/apache-nutch-1.7/conf/schema-solr4.xml nutch-core/conf/

4、备份原来的索引schema,用nutch的schema替代

[root@centos solrhome]# cd nutch-core/conf/
[root@centos conf]# mv schema.xml schema.xml.bak
[root@centos conf]# mv schema-solr4.xml schema.xml

修改schema

[root@centos conf]# vim schema.xml

在<fields></fields>中间加上

<field name="_version_" type="string" stored="true" indexed="true"/>

5、启动solr,抓取数据

[root@centos conf]# cd /data/nutch/apache-nutch-1.7/
[root@centos apache-nutch-1.7]# bin/nutch crawl urls -dir towns -depth 10 -threads 10 -topN 10 -solr http://192.168.125.129:8080/solr/nutch-core 
放置爬行结果的目录
-dir  dirnames      设置保存所抓取网页的目录. 
-depth  depth   表明抓取网页的层次深度
-delay  delay    表明访问不同主机的延时,单位为“秒”
-threads  threads      表明需要启动的线程数
-topN number    在每次迭代中限制爬行的头几个链接数,默认是Integer.MAX_VALUE

6、查看结果

三、nutch命令分享

1.查看crawldb数据库


查看url地址总数和它的状态及评分:bin/nutch readdb crawl/crawldb/ -stats
查看每个url地址的详细内容,导出数据:bin/nutch readdb url/crawldb/ -dump crawldb(导出的地址)
查看具体的url,以163为例:bin/nutch readdb url/crawldb/ -url http://www.163.com/


2.查看linkdb数据库
查看链接情况:bin/nutch readlinkdb crawl/linkdb/ -url http://www.163.com/
导出linkdb数据库文件:bin/nutch readlinkdb crawl/linkdb/ -dump linkdb(导出的地址)

3.查看segments
bin/nutch readseg -list -dir crawl/segments/ 可以看到每一个segments的名称,产生的页面数,抓取的开始时间和结束时间,抓取数和解析数。
bin/nutch readseg -dump crawl/segments/20090309103156 segdb 导出segments,其中crawl/segments/20090309103156为一个segments文件夹,segdb为存放转换后的内容的文件夹

4、nutch命令详解

bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN]

Crawl是“org.apache.nutch.crawl.Crawl”的别称,它是一个完整的爬取和索引过程命令。
bin/nutch readdb <crawldb> (-stats | -dump <out_dir> | -url <url>)
Readdb命令是“org.apache.nutch.crawl.CrawlDbReader”的别称,返回或者导出Crawl数据库(crawldb)中的信息。
Bin/nutch readlinkdb <linkdb> (-dump <out_dir> | -url <url>)
readlinkdb是"org.apache.nutch.crawl.LinkDbReader"的别称,导出链接库中信息或者返回其中一个URL信息。
bin/nutch injector <crawldb> <urldir>
injector是"org.apache.nutch.crawl.Injector"的别称,注入新URL到crawldb中。
bin/nutch generate <crawldb> <segments_dir> [-topN <num>] [-numFetchers <fetchers>] [-adddays <days>]
generate是“org.apache.nutch.crawl.Generator”,从Crawldb中抓取新的Segment。
bin/nutch fetch <segment> [-threads <n>] [-noParsing]
fetch是“org.apache.nutch.fetcher.Fetcher”的代称,它负责一个segment的爬取。
bin/nutch parse <segment>
parse是“org.apache.nutch.parse.ParseSegment”的代称,它对一个segment运行ParseSegment。
bin/nutch segread <segment>
segread是"org.apache.nutch.segment.SegmentReader"的代称,它读取并导出Segment数据。
bin/nutch updatedb <crawldb> <segment> [-noadditions]
updatedb是“org.apache.nutch.crawl.CrawlDb”的代称,用fetch过程中获取的信息更新crawldb。
bin/nutch invertlinks <linkdb> (-dir segmentsDir | segment1 segment2 ...)
invertlinks是“org.apache.nutch.crawl.LinkDb”的代称,它用从segment中获取到的信息更新linkdb。
bin/nutch index <index> <crawldb> <linkdb> <segment> ...
index是“org.apache.nutch.indexer.Indexer”的代称,创建一个segment的索引,利用crawldb和linkdb中的数据对索引中的页面打分。
bin/nutch dedup <indexes> ...
dedup是“org.apache.nutch.indexer.DeleteDuplicates”的别名,它segment indexes中去掉重复的页面。
bin/nutch plugin <pluginId> <className> [args ...]
plugin是“org.apache.nutch.plugin.PluginRepository”的代称,用于从插件库中加载一个插件并执行其主方法。

转自:http://my.oschina.net/liuxundemo/blog/210405

相关问答

更多
  • 生理学和心理学了解运用如何?去什么地方不重要,重要的是能够运用到您的专业,来奠定你的职业方向!从事教学工作还是教务管理工作。
  • 你去贵阳艺龙居室内设计学校啊,哪里就包就业,而且在哪学过的学员都很厉害,在装修行列中都很出名,还有小班教学,白天工作,晚上也可以来学,这是我的回答,希望能帮助你。
  • 我建议选择培训班的时候一定要选择业内口碑最好的机构,这样才能顺利通过公务员考试。随着现在公务员考试的持续升温,选择好的培训机构尤为重要,汇金大厦14楼的中青不错哦有空可以去看看
  • Nutch是构建网络爬虫和搜索引擎的框架。 Nutch可以完成从收集网页到建立倒排索引的整个过程。 它也可以将这些索引推送到Solr。 Solr主要是一个搜索引擎,支持分面搜索和许多其他简洁的功能。 但Solr不提取数据,你必须提供它。 因此,也许你必须要问的第一件事是在你是否有可用的索引数据(在XML中,在CMS或数据库中)。 在这种情况下,您应该只使用Solr并为其提供数据。 另一方面,如果你不得不从网络上获取数据,你可能更愿意使用Nutch。 Nutch is a framework to build ...
  • 这主要是Nutch使用的Solrj版本罐和您尝试集成的Solr 3.6之间的javabin不兼容性。 您需要更新Solrj罐并重新生成作业。 按照论坛中提到的步骤操作。 This is mainly the javabin incompatiblity between the Solrj version jars used by Nutch and the Solr 3.6 which you are trying to integrate. You would need to update the Sol ...
  • 您需要将以下Apache Commons库添加到类路径中: commons-httpclient.jar (您可以将它放在nutch安装所使用的其他JAR所在的文件夹中)。 你可以在这里找到当前版本的HttpClient http://hc.apache.org/httpcomponents-client-ga/ 请注意,您的Nutch版本可能使用较旧版本的HttpClient,而当前版本的HttpClient与旧版本不兼容。 在这种情况下,您需要下载旧版本的HttpClient,并在您的库中包含旧版本。 ...
  • 使用cygwin,这是一个很好的指南,可以将它们组合在一起: http://amac4.blogspot.com/2013/07/setting-up-solr-with-apache-tomcat-be.html Use cygwin, heres an excellent guide to set them up together: http://amac4.blogspot.com/2013/07/setting-up-solr-with-apache-tomcat-be.html
  • 在目前阶段,Nutch只负责抓取网页,这意味着访问网页,提取内容,找到更多链接并重复这个过程(我正在跳过很多复杂的东西,但希望你能得到这个想法) 。 爬网过程的最后一步是将数据存储在后端(ES / Solr是1.x分支上支持的数据存储)。 因此,在这个步骤中,Solr开始发挥作用,在Nutch完成其工作之后,您需要将数据存储在某处以便能够在其上执行查询:这是Solr作业。 前段时间Nutch包含了编写倒排索引的能力(正如问题中所解释的那样),但是决定(也是前一段时间)是弃用这个以支持使用Solr / ES( ...