You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy配置UA轮换中间件后仍提示robots规则无对应UA如何解决

问题原因
  • 核心爬取失败原因是allowed_domains配置错误:该配置仅支持填写纯域名,不能携带路径,你填写的thegreyhoundrecorder.com.au/form-guides/会导致除robots.txt外的所有页面请求被域名过滤规则直接丢弃。
  • 代码存在语法错误:类方法clean_date缺少self参数,调用时会触发参数不匹配报错。
  • start_urls存在冗余斜杠:末尾的双斜杠//可能导致部分站点路由匹配异常。
  • protego的DEBUG日志为非阻断性提示:Scrapy请求robots.txt时优先级高于普通页面请求,此时自定义UA中间件还未生效,请求未携带User-Agent,导致protego解析robots规则时无法匹配对应UA输出该日志,本身不会阻止爬取。
修复方案
  1. 修正爬虫基础配置,修改GreyhoundSpider类的对应参数:
allowed_domains = ['thegreyhoundrecorder.com.au']
start_urls = ['https://thegreyhoundrecorder.com.au/form-guides/']
  1. 修正clean_date方法参数:
def clean_date(self, dm):
    year = pd.to_datetime('now').year
    race_date =  pd.to_datetime(dm + ' ' + str(year)).strftime('%d/%m/%Y')
    return race_date
  1. 如需屏蔽protego的DEBUG日志,在settings.py中添加日志级别配置:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'loggers': {
        'protego': {
            'level': 'INFO',
        },
    }
}
  1. 可选优化:调高原自定义UA中间件的优先级,让robots.txt请求也能携带自定义UA,修改settings.py中的中间件配置:
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'greyhound_recorder_website.middlewares.UserAgentRotatorMiddleware': 100,
}

内容的提问来源于stack exchange,提问作者chuky pedro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:06:02