Scrapy爬取Walmart搜索页遇robots.txt拦截问题求助
解决Scrapy爬取Walmart搜索页的robots.txt禁止及scrapy-fake-useragent警告问题
一、处理"Forbidden by robots.txt"问题
你已设置ROBOTSTXT_OBEY=False但仍触发该提示,按以下步骤排查修复:
- 修正配置拼写错误:你的爬虫代码中
"AUTOTHROTTLE_START_DELAY "末尾多了一个空格,这会导致该配置项失效,甚至干扰其他配置的加载。修改为:"AUTOTHROTTLE_START_DELAY": 2, - 检查全局配置冲突:查看项目根目录的
settings.py文件,确认其中的ROBOTSTXT_OBEY未被设置为True——全局配置优先级高于爬虫的custom_settings,若两者冲突会以全局为准。 - 验证配置加载状态:可以在
parse方法中添加打印语句,确认配置是否生效:def parse(self, response): print("ROBOTSTXT_OBEY:", self.settings.get('ROBOTSTXT_OBEY')) pass
二、处理scrapy-fake-useragent的废弃警告
该警告源于中间件使用了Scrapy已废弃的RetryMiddleware.EXCEPTIONS_TO_RETRY属性,解决方式如下:
- 升级依赖包:执行命令更新到适配Scrapy新版本的scrapy-fake-useragent:
pip install --upgrade scrapy-fake-useragent - 手动配置替代项:若不想升级,可在
custom_settings中添加RETRY_EXCEPTIONS配置,覆盖废弃属性的功能:import scrapy # ... 其他代码 ... custom_settings = { # ... 已有配置 ... "RETRY_EXCEPTIONS": (scrapy.exceptions.IgnoreRequest, scrapy.exceptions.CloseSpider, scrapy.exceptions.NotConfigured), }
内容的提问来源于stack exchange,提问作者Sadam Shah
相关产品推荐
相关产品推荐

