ant nutch mysql_ant编译apache-nutch-2.2.1结合mysql实现爬虫的安装配置全过程

之前的数据抓取都是用的八爪鱼软件,老大突发奇想要我自己搞个爬虫来抓取数据,网上找找貌似apache的nutch比较合适,于是就开始安装这啥nutch。

对于一个linux零基础的人来说,还要先学学linux,大致了解了ssh连接工具怎么用后就开始正事了。了解到从nutch2开始,源码就必须要自己编译了,所以还要先安装ant。低版本的ant还不行,需要1.6以上的,所以找了个最新的。

ant安装:(ant是基于java的,所以要先确保系统中已经安装了jdk)

1.下载地址:http://ant.apache.org/bindownload.cgi 下载apache-ant-1.9.4-bin.tar.gz(当前最新版本),将该下载包拷贝到/usr/local下(随意了,找个地方就好)

2。解压

cd /usr/local

tar -zxvf apache-ant-1.8.1-bin.tar.gz

解压后会在/usr/local 下生成一个文件夹apache-ant-1.8.1

3。配置环境变量

vi /etc/profile,如下所示 加入ANT_HOME(解压的ant的路径)同时修改path

unset i

unset pathmunge

export JAVA_HOME=/usr/java/jdk1.7.0_25

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ANT_HOME=/usr/local/apache-ant-1.9.4export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

赋予连接

cd /usr/bin

ln -s -f /usr/local/ant/bin/ant

4。验证是否安装成功

运行ant -version,输出如下内容:

[root@localhost ~]# ant -version

Apache Ant version 1.9.4 compiled on 。。。。

ok,ant配置完成。

nutch的安装:

一.下载:

从官网http://www.apache.org/dyn/closer.cgi/nutch/下载最新版本apache-nutch-2.2.1同样放在本地usr/local(位置当然随个人喜好)

二.解压

cd /usr/local

tar -zxvf apache-nutch-2.2.1-bin.tar.gz

三.ant编译前需要做的几件事:

(1)需要下载sonar的jar包(sonar-ant-task-2.1.jar),并将jar包放到解压好的apache-nutch-2.2.1文件夹内

没有这个jar包,编译会出现错误如下:

[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.

(2)nutch编译安装时需要从maven资源库下载jar包,其本身配置文件中的maven仓库地址是不存在的,所以需要修改。

即:cd apache-nutch-2.2.1/ivy

vi ivy.setting.xml      修改nutch里ivy目录下的ivysetting.xml

将maven的路径用http://mirrors.ibiblio.org/maven2/替换,或者其他可用的maven仓库地址。

(3)设置数据抓取的存储位置(可以选择使用HBase、Accumulo、Cassandra 、MySQL 、DataFileAvroStore、AvroStore中任何一种来存储数据,但其中一些并不成熟。)

我选择了简单的mysql,以后学习的Hadoop可以试着和Hadoop结合。

1.手动创建数据库nutch和数据表webpage【如果不想用默认的库名和表名也可在nutch安装后的相关配置文件中进行修改,见后续说明】,其中webpage的表结构如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

CREATE TABLE`webpage` (

`id`varchar(767) NOT NULL,

`headers` blob,

`text` longtext DEFAULT NULL,

`status`int(11) DEFAULT NULL,

`markers` blob,

`parseStatus` blob,

`modifiedTime`bigint(20) DEFAULT NULL,

`prevModifiedTime`bigint(20) DEFAULT NULL,

`score`float DEFAULT NULL,

`typ`varchar(32) CHARACTER SET latin1 DEFAULT NULL,

`batchId`varchar(32) CHARACTER SET latin1 DEFAULT NULL,

`baseUrl`varchar(767) DEFAULT NULL,

`content` longblob,

`title`varchar(2048) DEFAULT NULL,

`reprUrl`varchar(767) DEFAULT NULL,

`fetchInterval`int(11) DEFAULT NULL,

`prevFetchTime`bigint(20) DEFAULT NULL,

`inlinks` mediumblob,

`prevSignature` blob,

`outlinks` mediumblob,

`fetchTime`bigint(20) DEFAULT NULL,

`retriesSinceFetch`int(11) DEFAULT NULL,

`protocolStatus` blob,

`signature` blob,

`metadata` blob,PRIMARY KEY(`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View Code

注:表中的字段根据nutch的conf文件“gora-sql-mapping”进行设置。同时也可通过自动方式生成数据库和表:配置好“gora-sql-mapping”、“gora.properties”及其它文件后,首次通过运行”bin/nutch inject urls”即可自动生成数据库和表,不过或许在自动生成的时候你会遇到问题。gora-sql-mapping配置文件如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

View Code

注:此处需要将gora-sql-mapping.xml中的id的length改成255。貌似是编码问题。

配置nutch对mysql的支持:修改${APACHE_NUTCH_HOME}/ivy/ivy.xml文件,分别:

将以下行的注释取消

default”/>

修改以下行

从默认的,改成

将以下行的注释取消

如果不修改以上的两点,Exception in thread “main” Java.lang.ClassNotFoundException:org.apache.gora.sql.store.SqlStore

3.数据库连接配置

编辑/conf/gora.properties文件,注释掉默认的数据库连接配置,同时添加以下配置内容:

###############################

#DefaultMySql properties #

###############################

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver

gora.sqlstore.jdbc.url=jdbc:mysql://192.168.70.4:3306/nutch-test

gora.sqlstore.jdbc.user=root1

gora.sqlstore.jdbc.password=123456

4.修改nutch-default配置文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

添加http.agent.name的值

http.agent.name

YourNutchSpider

在文件末尾添加以下内容

http.accept.language

ja-jp, en-us,en-gb,en;q=0.7,*;q=0.3

Value of the Accept-Language request header field.

This allows selecting non-English language as defaultone to retrieve.

It is a useful settingfor search engines build forcertain national group.

storage.data.store.class

org.apache.gora.sql.store.SqlStore

The Gora DataStore class forstoring and retrieving data.

Currently the following stores are available:.

parser.character.encoding.default

utf-8

The character encoding to fall back to when no other information

is available

特别添加以下内容

generate.batch.id

*

View Code

如果不添加最后的一段,

Exception inthread"main"java.lang.RuntimeException:job failed:name=generate:null,jobid=job_local177967844_0002

atorg.apache.nutch.util.NutchJob.waitForCompletion(NutchJob.java:54),查询发现utf8 传入了空,log报空指针

四.执行ant编译:

cd apache-nutch-2.2.1

ant

clean-lib:

resolve-default:

[ivy:resolve] :: Ivy2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::

[ivy:resolve] :: loading settings :: file = /home/shaozt/softIns/CrawSource/apache-nutch-2.1/ivy/ivysettings.xml

当编译执行到此处时,由于需要从maven仓库下载jar包,所以需要等待2-5分钟连接服务器,根据网络情况决定,需要等很久,有时还会连接服务器失败,如果等很久,可以Ctrl+C退出后,从新ant编译。直到出现编译成功。build successful

runtime:

BUILD SUCCESSFUL

Total time:18seconds

[root@localhost apache-nutch-2.2.1]#

cd apache-nutch-2.2.1

tree -L 1  查看目录发现多了build 和 runtime两个文件夹  安装成功

.|--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

五.网页抓取配置

1) 设置抓取的网站

cd ${NUTCH_HOME}/runtime/local

mkdir -p urls

echo 'http://www.taobao.com' > urls/seed.txt

2)执行爬取操作

bin/nutch crawl urls -depth 3 -topN 5

执行完在mysql中即可查看到爬虫抓取的内容,如下图:

y9QlVCTlq4Y+0sEi000R5IO00682898+DhMuMNmnxsZQPUUk0nNZCHpbOL9jXwbqI7S84GzJBGm2UOThMooHFvr4SrdpKaCgDZxUOcdOvEKoZ6KtPCDaax9MpwyWaM9fkXY3HTerqW0OiUU+pqwqksVxvNvRMDLjdUyZ1m3kQn+wuzLxKJBpHOt9ry7JZgLhfdm6Jj6V8iEqiWVk0yp3bhfTYi2b58Nll0cqyew7+D+6yRJ9GyuyuAAAAAElFTkSuQmCC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值