您的位置:首页 > 理论基础 > 计算机网络

Win7下基于Nutch-1.2网络抓取平台的配置

2015-02-07 17:30 253 查看
Win7下Nutch-1.2的配置
Step 1、安装虚拟环境Cygwin

Step 2、安装JDK

Step 3、下载安装Nutch-1.2,并进行配置

Step 4、安装Tomcat

Step 5、利用Nutch-1.2进行网页抓取

Step 6、利用Tomcat检索已经抓取的信息

目前可以实现:

1、 利用Nutch进行URL匹配,对网页及其内容进行抓取。

2、 把抓取到的网页内容读出来进行存储

3、 可以利用Nutch和Tomcat对抓取的网页进行检索

一、 安装虚拟环境Cygwin

因为Nutch自身的命令是要在Linux环境下才能运行,所以先安装了Cygwin,Cygwin是一个在Windows下的模拟Linux系统程序。

1、下载地址

Cygwin官网:http://www.cygwin.com/

2、安装步骤

(1)、选择Install from Internet





(2)、选择安装目录



(3)、选择已经下载的文件的安装目录





(4)、选择安装的镜像地址

选择http://mirrors.163.com



(5)、选择安装所有的包

在这一步需要安装所有的包,点击All& Default,变成Install即可。并且安装过程比较长,需要耐心等待。



(6)、安装完成



二、 安装JDK

因为Nutch是Java开发的,所以需要安装JDK。
1、下载并安装JDK
2、下载完成后安装,并设置环境变量
右键“我的电脑”—“属性”—“高级”—“环境变量”,在系统变量中,添加环境变量:

(1)、JAVA_HOME(其值为JDK安装目录)

(2)、PATH(其值为JDK安装目录,并到bin目录下)

(3)、CLASSPATH(其值为JDK安装目录,并到lib下,选中dt.jar 和tools.jar)

3、测试JDK是否配置成功

运行cmd,并分别输入java –version,java,javac命令,出现如下结果表明配置成功。







三、 下载安装Nutch-1.2,并进行配置

1、下载安装apache-nutch-1.2-bin.zip
下载地址:http://archive.apache.org/dist/nutch/
2、下载完成后将其解压到E盘,文件夹为nutch-1.2
3、输入cd/cygdrive/e/nutch-1.2



输入bin/nutch进行Nutch安装测试



得到如上图结果则安装配置成功。
4、对Nutch进行配置
(1)、设置系统变量

NUTCH_JAVA_HOME(其值为JDK的安装目录)

对nutch-1.2\conf\hadoop-env.sh中的JAVA_HOME设置(其值为JDK的安装目录)注意去掉前面的“#”。

(2)、设置需要抓取的网站主域名

在nutch-1.2文件夹内建立一个名为urls的文件夹,并在此文件夹内建立url.txt的文本文件,写入http://zh.wikipedia.org(此处以维基百科为例)。

(3)、设置网站过滤规则
1)、编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分

# accept hosts inMY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
改为:

# accept hosts in MY.DOMAIN.NAME

+^http://([a-z0-9]*\.)* wikipedia.org/
如果想同时抓取多个网站,在底下添加多个URL即可。
2)、设置代理信息
编辑conf\nutch-site.xml文件
在<configuration>和</configuration>之间添加如下内容:
<property>
<name>http.agent.name</name>

<value>http://zh.wikipedia.org/</value>

</property>

<property>

<name>http.agent.url</name>

<value>http://zh.wikipedia.org/</value>

</property>

<property>

<name>http.robots.agents</name>

<value>http://zh.wikipedia.org/</value>

</property>

3)、设置代理名

编辑nutch-1.2\conf\nutch-default.xml文件
找<name>http.agent.name</name>,然后随便设置Value值,在爬行的时候可能出现空指针异常且在tomcat中搜索时可能导致0条记录,所以务必加上。

例如:可以将其值设为wikipedia。
四、 安装Tomcat

Nutch的演示的搜索界面是JSP的,所以需要用Tomcat做服务器。
1、下载地址:http://tomcat.apache.org/download-60.cgi

2、设置环境变量
CATALINA_BASE (其值为Tomcat的安装目录)
CATALINA_HOME (其值为Tomcat的安装目录)
CLASSPATH (其值为%CATALINA_HOME%\lib)
3、 Nutch提供了类似google、baidu的网页页面,关闭tomcat服务,在nutch-1.2下找到nutch-1.2.war文件,放到Tomcat的webapps目录下,重新启动tomcat服务,则自动解压出nutch-1.2。
修改nutch-1.2\WEB-INF\classes\nutch-site.xml文件内容如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>wikipedia</value>
</property>
<property>
<name>searcher.dir</name>
<value>E:\nutch-1.2\crawled</value>
</property>
</configuration>
注意:

1)、value的值是爬行后的存储目录位置;

2)、nutch-1.2.war应在爬完网页再解压 ;

3)、每次修改nutch-site.xml都要重启Tomcat

五、 利用Nutch-1.2进行网页抓取

1、启动Cygwin
输入命令cd/cygdrive/e/nutch-1.2
输入export LANG="zh_CN.GBK"(设置linux环境变量)
2、进行抓取
输入命令bin/nutchcrawl urls -dir crawled -depth 4 -threads 3 -topN 30
crawl是nutch检索数据命令,后面跟上要检索的URL文件;

-dir指定抓取内容所存放的目录;

-depth表示以要抓取网站顶级网址为起点的爬行深度;

-threads指定并发的线程数;

-topN抓取时每页的最大抓取链接;

depth,threads,topN的值可以根据实际需要进行设置。

运行时:







运行后:



抓取完成后会将所抓取的信息存入文件夹中,并且显示文件夹信息,上图中有以前抓取和本次运行所抓取的,这些抓取的信息按时间命名文件夹进行存储。



crawldb是所有需要抓取的超连接信息(另说:存放下载的URL,及下载的日期,用来页面更新检查时间)

linkdb中存放的是所有超连接及其每个连接的连入地址和锚文本。

indexs存放每次下载的独立索引目录,这个可以由Crawldb,Linkdb和segments来合成:bin/nutch index crawl/indexs crawl/crawldb crawl/linkdbcrawl/segments/*。

index是lucene的索引目录(使用luke工具查看),是indexs里所有index合并后的完整索引,注意索引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问 segments目录才能获得页面内容。

segments存放抓取的页面,与上面链接深度depth 相关,打开此文件夹可以看到,它下面还有6个子文件夹,分别是:

crawl_generate :names a set ofurls to be fetched

crawl_fetch : contains thestatus of fetching each url

crawl_parse : contains theoutlink urls, used to update the crawldb

content : contains thecontent of each url

parse_text : contains theparsed text of each url

parse_data : containsoutlinks and metadata parsed from each url

segments是每轮抓取的时候根据crawldb生成的。存放的信息包括6种content、crawl_fetch、crawl_generate、crawl_parse、parse_data、parse_text。其中content是抓取下来的网页内容;crawl_generate最初生成(待下载URL集合);crawl_fetch(每个下载URL的状态)、content在抓取时生成;crawl_parse(包含用来更新crawldb的外链)、parse_data、parse_text在解析抓取的数据文件时生成。其中crawl_generate、crawl_fetch和crawl_parse是crawldb的部分url数据,它们格式一样,不同的是抓取时间、状态、签名等有所变化。



3、将抓取的网页内容读到文件中

输入命令:

bin/nutch readseg-dump E:/nutch-1.2/crawled/segments/20150125194824 segdb -nocontent -nofetch-nogenerate -noparse -noparsedata



其中:

readseg是nutch读取命令

segdb是读取后存入的文件夹名

打开nutch下的segdb文件夹查看读出的数据:



六、 利用Tomcat检索已经抓取的信息

1、启动Tomcat

2、打开Tomcat 8.0\bin下的startup.bat

3、输入http://localhost:8080/nutch-1.2



4、检索



5、关于中文乱码问题:

为了支持中文,修改tomcat\conf的server.xml
<Connectorport="8080" protocol="HTTP/1.1"> 里面
<Connectorport="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8"

useBodyEncodingForURI="true"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: