Scrapy配置allowed_domains后合法请求被误判为站外请求过滤原因求解
问题根本原因
- Scrapy 的
allowed_domains配置项仅接受纯域名内容,不能附带HTTP/HTTPS协议头、路径、端口等额外信息。你配置的['https://www.tripadvisor.co.uk']包含了https://协议前缀,不符合参数规范。 - Scrapy 内置的OffsiteMiddleware中间件负责跨站请求过滤,校验时会提取待发请求的纯域名
www.tripadvisor.co.uk,和allowed_domains列表里的内容做匹配,因为你配置的内容带了协议头,二者匹配失败,所以分页请求被判定为非法跨站请求直接过滤,这就是你看到Filtered offsite request日志的原因。 - 当你删除
allowed_domains配置后,OffsiteMiddleware会自动停止跨站校验逻辑,所有请求都不会被过滤,自然就能正常爬取全部分页数据。
正确配置方案
将allowed_domains的内容修改为不带协议的纯域名即可:
allowed_domains = ['www.tripadvisor.co.uk']
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

