nutch eclipse mysql_搭建eclipse環境下 Nutch+Mysql 二次開發環境

最近看了下Nutch,目前Nutch最新版本2.3.1,支持Hbase、MongoDB等存儲,但在搭建和測試過程中發現對Mysql 的支持好像有點問題。

后來將Nutch版本改為2.2.1。基於Nutch2.2.1+Mysql 的環境配置過程如下:

1.下載Nutch2.2.1 源碼:SVN:https://svn.apache.org/repos/asf/nutch/branches/branch-2.2.1

2.修改Nutch2.2.1 源碼中的ivy/ivysetings.xml

添加一個源:

value="http://maven.restlet.org"

override="false"/>

增加以下紅色部分代碼

經過測試,沒有增加這個有些包下載不了,可能和網絡有關系。

3.修改ivy/ivy.xml

啟用以下兩個依賴

default" /> default"/>

4.進入命令行,並定位到Nutch目錄

執行:

ant eclipse -verbose

由於網絡帶寬問題,整個過程執行了半個小時

執行完成之后如下圖所示

a5c0b721699a22bdbf3a8880a9694308.png

發現build文件夾比原來多了很多內容。

5. 打開Eclipse

使用Import 導入Nutch工程

23600294b64c8828c6463596e8025492.png

d6020e903cc849365108a0939ef9049b.png

6.配置conf/nutch-site.xml

0db7ec7b627d7b14eac9f0c8ece6d7fb.gif<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?>http.agent.nameYourNutchSpiderhttp.accept.languageja-jp, en-us,en-gb,en,zh-cn,zh-tw;q=0.7,*;q=0.3Value of the “Accept-Language” request header field. This allows selecting non-English language as default one to retrieve. It is a useful setting for search engines build for certain national group.parser.character.encoding.defaultutf-8The character encoding to fall back to when no other information is availableplugin.folderssrc/pluginDirectories where nutch plugins are located. Each element may be a relative or absolute path. If absolute, it is used as is. If relative, it is searched for on the classpath.storage.data.store.classorg.apache.gora.sql.store.SqlStoreThe Gora DataStore class for storing and retrieving data. Currently the following stores are available: ….generate.batch.id*0db7ec7b627d7b14eac9f0c8ece6d7fb.gif

7.配置 gora.properties

0db7ec7b627d7b14eac9f0c8ece6d7fb.gifgora.datastore.default=org.apache.gora.sql.store.SqlStoregora.datastore.autocreateschema=truegora.sqlstore.jdbc.driver=com.mysql.jdbc.Drivergora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNullgora.sqlstore.jdbc.user=rootgora.sqlstore.jdbc.password=0db7ec7b627d7b14eac9f0c8ece6d7fb.gif

8.創建mysql數據庫和表結構

0db7ec7b627d7b14eac9f0c8ece6d7fb.gif

CREATE TABLE webpage (

id varchar(256) 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(256) DEFAULT NULL,

content longblob,

title text DEFAULT NULL,

reprUrl varchar(256) 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;0db7ec7b627d7b14eac9f0c8ece6d7fb.gif

9. 配置Crawler.java 的執行參數

43e814a3f3774a144be58777c02461c7.png

10. 修改Hadoop的FileUtil.java

由於windows平台問題,需要修改FileUtil.java 代碼,將紅色部分注釋掉。否則在執行Crawl 過程中會報Hadoop的路徑權限錯誤

0db7ec7b627d7b14eac9f0c8ece6d7fb.gif1 private static void checkReturnValue(boolean rv, File p, FsPermission permission)2 throws IOException3 {4 //if (!rv)5 // throw new IOException(new StringBuilder().append("Failed to set permissions of path: ").append(p).append(" to ").append(String.format("%04o", new Object[] { Short.valueOf(permission.toShort()) })).toString());6 }0db7ec7b627d7b14eac9f0c8ece6d7fb.gif

11. 在工程目錄創建urls 文件夾,並在文件夾中創建seed.txt文件

添加需要爬取的網站URL路徑,如: http://www.cnblogs.com/

注意:這個urls文件夾與Crawler執行參數的urls 對應。

12.執行Crawler.java 觀察Mysql 數據

13.在大多數情況下,網站可能配置了反爬蟲的功能robots.txt

Nutch也遵守了該協議,但可以通過修改Nutch的源碼繞過反爬蟲。

只需要將類FetcherReducer 的以下這個代碼注釋掉即可

/*

if (!rules.isAllowed(fit.u.toString())) {

// unblock

fetchQueues.finishFetchItem(fit, true);

if (LOG.isDebugEnabled()) {

LOG.debug("Denied by robots.txt: " + fit.url);

}

output(fit, null, ProtocolStatusUtils.STATUS_ROBOTS_DENIED,

CrawlStatus.STATUS_GONE);

continue;

}

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值