Nutch爬虫将网页爬下来后,分析url的时候确实是会把所有的url给解析出来。但是,如果仔细观察的话,nutch爬虫并不会把所有的解析出来的url传到过滤器里。
查看源码以后发现,nutch爬虫有一个环节里会把很多url给忽略掉。Org.apache.nutch.parse包里的ParseOutputFormat这个类里的getRecordWriter方法里有一个变量叫maxOutlinksPerPage,这个变量就是这一现象的罪魁祸首。原来,nutch爬虫用这个变量规定,解析出来的url当中只有前面maxOutlinksPerPage个url会传到过滤器,并且,存储到下载列表,而这个变量的默认值就是100。所以,没有修改这个变量,nutch爬虫会默认只将前面100个url发送到过滤器,其余的都给无视掉了。
为了修改这个变量的值,我们需要修改crawl-tool.xml这个文件。顺便说下,这个文件是配置爬虫的最主要文件,基本上很多东西可以在这个文件配置。在这个文件加上如下内容:
<property>
<name>db.max.outlinks.per.page</name>
<value>1000</value>
</property>
这样,爬虫会将解析到的url当中前面1000个url传到过滤器。