日期:2014-05-16  浏览次数:20832 次

windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤

nutch2.x 在eclipse中实现抓取数据存进mysql步骤

最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步。

 对nutch的实现过程熟悉下,就可以实现电影采集网站了   如     无为电影在线

1、环境搭建

1)准备eclipse   安装Maven ,svn

2)在svn中下载官方2.x最新源码(参考官方http://wiki.apache.org/nutch/RunNutchInEclipse说明)

3)把工程转成maven工程,等系统下载依赖包

4)这时候可能有红叉,因为缺少jar包,这是pom的问题

<dependency>
                        <groupId>org.restlet.jse</groupId>
                        <artifactId>org.restlet</artifactId>
                        <version>2.0.5</version>
                        <optional>true</optional>
                </dependency>
                <dependency>
                        <groupId>org.restlet.jse</groupId>
                        <artifactId>org.restlet.ext.jackson</artifactId>
                        <version>2.0.5</version>
                        <optional>true</optional>
                </dependency>
比如上面这段二个包就下载不下来。maven仓库没有。需要把restlet的私库加进来:

<repositories>
		<repository>
			<id>maven-restlet</id>
			<name>Public online Restlet repository</name>
			<url>http://maven.restlet.org</url>
		</repository>
	</repositories>
在pom.xml中增加这段,就可以下载了。

这时候按道理,应该就可以了,可是还有些问题,nutch2.x自身配的dadoop-core是1.1.1的版本,在windows环境下运行起来会有问题,如:会抛出权限异常:cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-2070047262

在网上搜索这个异常,别人提供的办法是,使用hadoop-core-1.0.2-modified.jar (下载地址) 这个包可以不配到maven,加到Lib就可以,看各人爱好。

再按道理讲,这时候该没问题了吧,实践证明 ,还是不行,(先把配置讲完)pom中配的gora-core是最新版0.3,配置mysql的时候会有问题。要改成0.2.1.

另外增加gora-sql包

<dependency>
                        <groupId>org.apache.gora</groupId>
                        <artifactId>gora-core</artifactId>
                        <version>0.2.1</version>
                        <optional>true</optional>
                </dependency>
                <dependency>
					<groupId>org.apache.gora</groupId>
					<artifactId>gora-sql</artifactId>
					<version>0.1.1-incubating</version>
					<exclusions>
					<exclusion>
          				<groupId>org.hsqldb</groupId>
          				<artifactId>hsqldb</artifactId>
        			</exclusion>
					</exclusions>
				</dependency>
另外还有这几个包要在pom中配置:

<dependency>
					<groupId>net.sourceforge.nekohtml</groupId>
					<artifactId>nekohtml</artifactId>
					<version>1.9.13</version>
				</dependency>
				<dependency>
					<groupId>org.ccil.cowan.tagsoup</groupId>
					<artifactId>tagsoup</artifactId>
					<version>1.2.1</version>
				</dependency>
				<dependency>
					<groupId>dk.brics.automaton</groupId>
					<artifactId>automaton</artifactId>
					<version>1.11-8</version>
				</dependency>
           		<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>5.1.26</version>
				</dependency>

前3个包是插件代码中有引用到,没配置插件前不报错,但是后面还是要配的。最后一个是mysql的连接器,当然要配啦。完整的pom文件。

至此环境差不多,是不是特别麻烦,现在写出来都有这么多要改,在最开始不知道的时候,得花多少时间去应付报错,找问题。


5)安装mysql,创建数据库nutch:

CREATE DATABASE nutch DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;
还有建表:

CREATE TABLE `webpage` (
`id` varchar(255) NOT NULL,