在 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
Scrapy爬虫解析与请求深度
本文介绍在Scrapy框架中如何避免请求被过滤,确保parse函数多次执行。通过设置allowed_domains或使用dont_filter参数,及在settings.py中配置DEPTH_LIMIT来控制回调执行次数。
1490





