在 scrapy 的parse()函数中,用调度器回调request对象时:
scrapy.Request(url, headers=self.header, callback=self.parse)
发现回调函数 parse 只被执行了一次,这可能就是请求url被过滤掉了,查看 scrapy 的输出日志 offsite/filtered 会显示过滤的数目。
两种方法能够使 requests 不被过滤:
- 在 allowed_domains 中加入 url;
- 在 scrapy.Request() 函数中将参数 dont_filter=True 设置为 True;
yield Request(url=next_url, callback=self.parse, dont_filter=True)
另外,在settings.py设置文件中,可设置回调执行次数(请求深度):
DEPTH_LIMIT = 5