nutch

#简介
数据采集工具


#官网
http://nutch.apache.org/




#参考
http://blog.csdn.net/jiutao_tang/article/details/6450137
https://www.cnblogs.com/xuekyo/archive/2013/04/18/3028559.html


#使用方法1
http://blog.csdn.net/pengpengfly/article/details/2994664




#介绍使用
https://yq.aliyun.com/articles/25801


#使用2
http://datahref.com/archives/44




1. Nutch介绍
Nutch是一个开源的网络爬虫项目,更具体些是一个爬虫软件,可以直接用于抓取网页内容。


现在Nutch分为两个版本,1.x和2.x。1.x最新版本为1.7,2.x最新版本为2.2.1。两个版本的主要区别在于底层的存储不同。


1.x版本是基于Hadoop架构的,底层存储使用的是HDFS,而2.x通过使用Apache Gora,使得Nutch可以访问HBase、Accumulo、Cassandra、MySQL、DataFileAvroStore、AvroStore等NoSQL。


2. 编译Nutch
Nutch1.x从1.7版本开始不再提供完整的部署文件,只提供源代码文件及相关的build.xml文件,这就要求用户自己编译Nutch,而整个Nutch2.x版本都不提供编译完成的文件,所以想要学习Nutch2.2.1的功能,就必须自己手动编译文件。


2.1 下载解压
$ wget http://archive.apache.org/dist/nutch/2.2.1/apache-nutch-2.2.1-src.tar.gz
$ tar zxf apache-nutch-2.2.1-src.tar.gz
2.2 编译
$ cd apache-nutch-2.2.1
$ ant
有可能你会得到如下错误:


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.
解决办法:


下载sonar-ant-task-2.1.jar,将其拷贝到apache-nutch-2.2.1目录下面
修改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>
Nutch使用ivy进行构建,故编译需要很长时间,如果编译时间过长,建议修改maven仓库地址,修改方法:


通过用http://mirrors.ibiblio.org/maven2/替换ivy/下ivysettings.xml中的http://repo1.maven.org/maven2/来解决。代码位置为:


<property name="repo.maven.org" value="http://repo1.maven.org/maven2/" override="false"/>
编译之后的目录如下:


  apache-nutch-2.2.1  tree -L 1
.
├── CHANGES.txt
├── LICENSE.txt
├── NOTICE.txt
├── README.txt
├── build
├── build.xml
├── conf
├── default.properties
├── docs
├── ivy
├── lib
├── runtime
├── sonar-ant-task-2.1.jar
└── src


7 directories, 7 files
可以看到编译之后多了两个目录:build和runtime


3. 修改配置文件
由于Nutch2.x版本存储采用Gora访问Cassandra、HBase、Accumulo、Avro等,需要在该文件中制定Gora属性,比如指定默认的存储方式gora.datastore.default= org.apache.gora.hbase.store.HBaseStore,
该属性的值可以在nutch-default.xml中查找storage.data.store.class属性取得,在不做gora.properties文件修改的情况下,存储类为org.apache.gora.memory.store.MemStore,该类将数据存储在内存中,仅用于测试目的。


#修改 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>




#修改 ivy/ivy.xml
<!-- Uncomment this to use HBase as Gora backend. -->
<dependency org="org.apache.gora" name="gora-hbase" rev="0.6.1" conf="*->default" />


#修改 conf/gora.properties,确保HBaseStore被设置为默认的存储,
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore


因为这里用到了HBase,故还需要一个HBase环境,你可以使用Standalone模式搭建一个HBase环境,请参考 HBase Quick Start。需要说明的时,目前HBase的版本要求为 hbase-0.90.4。


4. 集成Solr
由于建索引的时候需要使用Solr,因此我们需要安装并启动一个Solr服务器。


4.1 下载,解压
$ wget http://mirrors.cnnic.cn/apache/lucene/solr/4.8.0/solr-4.8.0.tgz
$ tar -zxf solr-4.8.0.tgz
4.2 运行Solr
$ cd solr-4.8.0/example
$ java -jar start.jar
验证是否启动成功


用浏览器打开 http://localhost:8983/solr/admin/,如果能看到页面,说明启动成功。


4.3 修改Solr配置文件
将apache-nutch-2.2.1/conf/schema-solr4.xml拷贝到solr-4.8.0/solr/collection1/conf/schema.xml,并在<fields>...</fields>最后添加一行:


<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
重启Solr,


# Ctrl+C to stop Solr
$ java -jar start.jar
5. 抓取数据
编译后的脚本在 runtime/local/bin 目录下,可以运行命令查看使用方法:


crawl命令:


$ cd runtime/local/bin
$ ./crawl
Missing seedDir : crawl <seedDir> <crawlID> <solrURL> <numberOfRounds>
nutch命令:


$ ./nutch
Usage: nutch COMMAND
where COMMAND is one of:
 inject inject new urls into the database
 hostinject     creates or updates an existing host table from a text file
 generate generate new batches to fetch from crawl db
 fetch fetch URLs marked during generate
 parse parse URLs marked during fetch
 updatedb update web table after parsing
 updatehostdb   update host table after parsing
 readdb read/dump records from page database
 readhostdb     display entries from the hostDB
 elasticindex   run the elasticsearch indexer
 solrindex run the solr indexer on parsed batches
 solrdedup remove duplicates from solr
 parsechecker   check the parser for a given url
 indexchecker   check the indexing filters for a given url
 plugin load a plugin and run one of its classes main()
 nutchserver    run a (local) Nutch server on a user defined port
 junit          runs the given JUnit test
 or
 CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
接下来可以抓取网页了。




#教程1
http://www.cnblogs.com/huligong1234/p/3464371.html


#教程2
https://www.cnblogs.com/yanyue/p/6828724.html?utm_source=itdadao&utm_medium=referral


+^https?://([a-z0-9-]+\.)*nutch\.apache\.org/
+^https?://([a-z0-9-]+\.)*data\.stats\.gov\.cn/


#------------------------------本地模式-------------------------------


#抓取数据
local 目录中
#创建
bin/crawl urls data 1
#添加
bin/nutch inject data/crawldb urls
#生成
bin/nutch generate data/crawldb data/segments
#设置采集段目录
s1=`ls -d data/segments/2* | tail -1`
echo $s1
#采集
bin/nutch fetch $s1
#解析
bin/nutch parse $s1


#存储solr的连续脚本
bin/nutch index -D solr.server.url=http://localhost:8983/solr/nutch data/crawldb/ -linkdb data/linkdb/ data/segments -filter -normalize -deleteGone










#连续脚本命令
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch urls/ data  1


bin/crawl -i -D elastic.server.url=http://localhost:9200 urls/ data  1


#---------------------------集群模式---------------------------------------
#参考
http://www.open-open.com/lib/view/open1328670771405.html


#创建目录
sudo -u hdfs hadoop fs -put urls /nutch/urls


#在NUTCH_HONE/runtime/deploy目录下执行以下命令
##########sudo -u hdfs bin/nutch bin/crawl /nutch/urls –dir /nutch/data -depth 3 –topN 10########


#添加
sudo -u hdfs bin/nutch inject /nutch/data/crawldb /nutch/urls


#生成
sudo -u hdfs bin/nutch generate /nutch/data/crawldb /nutch/data/segments


#采集
sudo -u hdfs bin/nutch fetch /nutch/data/segments/*


#解析
sudo -u hdfs bin/nutch parse /nutch/data/segments/*


#存储solr的连续脚本
sudo -u hdfs bin/crawl -i -D solr.server.url=http://100.100.100.242:8983/solr/nutch /nutch/urls/ /nutch/data  1


#删除hadoop上文件夹
sudo -u hdfs hdfs dfs -rm -r -f /nutch/data


#查看查看URL地址总数和它的状态及评分
bin/nutch readdb data/crawldb/ -stats
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值