为什么我的Scrapy爬虫无法抓取tonaton站点的指定链接?
问题根因
从运行日志中的Filtered offsite request to 'tonaton.com'记录可直接定位,你的请求被Scrapy默认的跨域过滤机制拦截了:
- 代码中
allowed_domains配置的允许抓取域名为带www的www.tonaton.com - 站点实际经过两次301跳转后,最终访问的根域名为不带www的
tonaton.com,你要抓取的目标链接所属域名也和该值一致,不在你配置的允许域名列表内,因此请求被直接过滤丢弃。
修复方案
修改allowed_domains配置即可,两种写法任选其一:
- 直接填写站点实际使用的不带www的根域名:
allowed_domains = ['tonaton.com']
- 两个域名都加入允许列表,避免后续跳转再次触发过滤规则:
allowed_domains = ['www.tonaton.com', 'tonaton.com']
额外优化建议
可以把start_urls同步修改为跳转后的最终地址https://tonaton.com/,减少不必要的301跳转请求,提升抓取效率。
内容的提问来源于stack exchange,提问作者Danny Stringz
相关产品推荐
相关产品推荐

