最近做网站抓取业务,使用的是nutch1.12,把解决问题的经验记录一下,方便遇到相同问题的小伙伴参考。
我要抓取的网站,产品很多,我配置的抓取层数应该足够多。但是每次抓取到的产品详情都很少。下面写一下排查历程
1、首先想到的是robots.txt禁止抓取,nuthc的代码是遵循rotot规则的,从源码里找到robot规则那段代码,直接注释掉(对不起被爬的网站),问题依然存在
2、怀疑是regex-urlfilter.txt配置问题,修改配置文件(网上很多,就不详细写了),还是没解决问题。
3、怀疑是nutch在解析页面的时候抽取url的问题,于是检查之前的爬取结果,意外的发现,爬取的外链总数,只有100个。如果是个随机的数字,也就算了,但是这个数字很整齐,突然想到,也许是哪个配置的问题,于是打开nutch-default.xml 文件,直接查询100这个数字。
<property>
<name>db.max.outlinks.per.page</name>
<value>100</value>
<description>The maximum number of outlinks that we'll process for a page.
If this value is nonnegative (>=0), at most db.max.outlinks.per.page outlinks
will be processed for a page; otherwise, all outlinks will be processed.
</description>
</property>
发现了这个配置,默认100。为了验证这个问题,我打开被爬的页面,搜索了一下外链数,居然变态的有8000多个。
果断修改配置参数,重新爬取。问题解决。