Nutch网页抓取总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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官网:/
2、安装步骤
(1)、选择Install from Internet
(2)、选择安装目录
(3)、选择已经下载的文件的安装目录
(4)、选择安装的镜像地址
选择http://
(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
下载地址:/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的文本文件,写入(此处以维基百科为例)。
(3)、设置网站过滤规则
1)、编辑conf/crawl-urlfilter.txt文件,修改部分
将
# accept hosts in
+^http://([a-z0-9]*\.)*/
改为:
# accept hosts in
+^http://([a-z0-9]*\.)* /
如果想同时抓取多个网站,在底下添加多个URL即可。
2)、设置代理信息
编辑conf\nutch-site.xml文件
在<configuration>和</configuration>之间添加如下内容:
<property>
<name></name>
<value>/</value>
</property>
<property>
<name>http.agent.url</name>
<value> /</value>
</property>
<property>
<name>http.robots.agents</name>
<value> /</value>
</property>
3)、设置代理名
编辑nutch-1.2\conf\nutch-default.xml文件
找<name></name>,然后随便设置Value值,在爬行的时候可能出现空指针异常且在tomcat中搜索时可能导致0条记录,所以务必加上。
例如:可以将其值设为wikipedia。
四、安装Tomcat
Nutch的演示的搜索界面是JSP的,所以需要用Tomcat做服务器。
1、下载地址:/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></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/nutch crawl 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/linkdb
crawl/segments/*。
index是lucene的索引目录(使用luke工具查看),是indexs里所有index 合并后的完整索引,注意索引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问 segments目录才能获得页面内容。
segments存放抓取的页面,与上面链接深度 depth 相关,打开此文件夹可以看到,它下面还有6个子文件夹,分别是:
crawl_generate :names a set of urls to be fetched
crawl_fetch : contains the status of fetching each url
crawl_parse : contains the outlink urls, used to update the crawldb content : contains the content of each url
parse_text : contains the parsed text of each url
parse_data : contains outlinks 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
<Connector port="8080" protocol="HTTP/1.1"> 里面
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"/>。