记录一下利用Heritrix爬取特定网站范围内的网页的配置过程,以便以后参考。

以新浪为例,我们希望将爬虫爬取的范围限定在新浪之内,而不去爬取在来自于其他网站的URL。

首先,我们需要设定爬取的种子链接。在此需要注意,种子链接需要设置成http://sina.com.cn。 因为在接下来的CrawlScope的选择中,我们会选择DecidingScope配置项,而此配置项中包含SurtPrefixedDecideRule规则,此规则的作用在于限定爬取的范围不会超出种子链接所属的域。而详细查看SurtPrefixedDecideRule规则可知,http://sina.com.cn代表的是域名为sina.com.cn的所有页面和属于此域名的所有子域名下的所有页面,比如http://news.sina.com.cn和http://auto.sina.com.cn下的所有页面也是我们将要爬取的范围。而如果将种子链接设成http://sina.com.cn/ 或者 http://www.sina.com.cn均会将爬取范围限制在很小的范围内。http://sina.com.cn代表只爬取域名为sina.com.cn的所有页面而不会去爬取其子域名下的页面, 而http://www.sina.com.cn下的子域名几乎没有。

其次,设置爬取的参数。这里需要着重说明的是设置CrawlScope,上文以提到需要选择DecidingScope作为配置项。DecidingScope配置项包含了许多DecideRule,其中有一项是TransclusionDecideRule,我们在配置的时候需要将其去除,目的在于防止爬取范围跳到其它的host下。

最后,其它的配置可根据需要设置。最终的爬取效果如下图,