虽然,网上有很多类似的博客,我这篇博客可能在其他博客上也有,但是我还是想记录一下我学习nutch的过程。通过xshell日志记录来写这篇博客(我不想重新来一遍了!_)
nutch爬虫的抓取周期主要分为5步:
1.inject—>2.generate—>3.fetch—>4.parse—>5.update
nutch2.3.1的编译过程这里就不多说了,nutch编译好之后,在runtime文件夹下有两个文件夹local和deploy分别对应的nutch的两种运行模式,本地模式和部署模式。这个以后再讲,首先来看本地模式local。
一、注入(inject)
命令:nutch inject
有两个参数
url_dir:种子url目录
crawlid:爬虫id(通过hbase存储时,会产生id_webpage的表格)
在种子url注入的时候我遇到的问题—就是没有成功inject url
如上图所示,
total number of urls rejected by filters: 1 被过滤器拒绝的url数为1
total number of urls injected after normalization and filtering: 0,意思就是在归一化和过滤后的注入url的数量为0,
我的种子url总共就一个,全被拒绝了,我在网上找好久,说什么看hadoop日志找问题,可是我的日志都是正常连一个警告都没有。没有找到适合自己的解决方法,后来我突然意识到我修改regex-urlfileter.txt。后来我修改一下正则表达式。通过了。
我是把hadoop和hbase整合一起了。所以我的数据存储在hbase上。在hbase查看表。
如上图所示,生成了一个nsh_webpage的表。查看表中数据。
这是场面插入的一条数据。
二、产生抓取列表
命令:nutch generate
如上图所示generate的用法和执行结果。
执行时,有一个必要参数:crawlid,其余的可以默认。
三、抓取
命令为:nutch fetch
用法:
这里执行的命令(其余的默认)参数为:nutch fetch -all -crawlId nsh -threads 1
抓取结果:
结果显示抓取了一个网页,没有错误,抓取速度等信息。
查看nsh_webpage表:
如图所示,表中存储着html网页。由于太多了,显示不完整,只能截图一部分。
四、解析
解析的命令为:parse
用法:
这里执行的是:nutch parse -all -crawlId nsh
执行结果:
如图所示。成功解析了网址为https://www.biqudao.com网页。
五、更新crawldb
作用:将新的url存入crawldb中,并对之前的url状态进行更新。
命令:update
用法:
执行命令:nutch updatedb -all -crawlId nsh
结果为:
这是结果的一部分。从网页www.biqudao.com解析出来的网址。