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

Scrapy爬取Adidas站点遇连接超时,求助移除默认Connection:close请求头

解决Scrapy爬取Adidas站点的Connection超时问题

问题回顾

你在使用Scrapy爬取Adidas美国站的男鞋页面(http://www.adidas.com/us/men-shoes)时遇到了超时错误,即便Chrome能正常访问该页面,且你已经添加了自定义User-Agent和请求头,问题依然存在。通过Fiddler分析后发现,根源在于Scrapy默认发送的Connection: close请求头,移除该头后请求即可正常响应,现在需要解决如何移除Scrapy默认的这个请求头。

解决方案

Scrapy默认会在请求中附加Connection: close头,我们可以通过两种方式覆盖或调整这个默认行为:

1. 在单个请求中显式覆盖Connection头

直接在你的start_requests方法的headers里将Connection设置为keep-alive,这样会覆盖Scrapy的默认值。修改后的代码如下:

import scrapy
class AdidasSpider(scrapy.Spider):
    name = "adidas"
    def start_requests(self):
        urls = ['http://www.adidas.com/us/men-shoes']
        headers = {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "en-US,en;q=0.9",
            "Cache-Control": "max-age=0",
            "Connection": "keep-alive",  # 显式设置为keep-alive,覆盖默认的close
            "Host": "www.adidas.com",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
        }
        for url in urls:
            yield scrapy.Request(url, self.parse, headers=headers)
    def parse(self, response):
        yield {'response_content': response.body.decode('utf-8')}  # 转为字符串更易查看结果

2. 全局修改默认请求头(适用于所有爬虫)

如果希望所有爬虫请求都统一使用Connection: keep-alive,可以在Scrapy项目的settings.py文件中修改DEFAULT_REQUEST_HEADERS配置:

DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'Connection': 'keep-alive'  # 添加这一行,替换默认的close
}

补充说明

  • Chrome能正常访问的原因是:Chrome默认发送的是Connection: keep-alive请求头,和Scrapy的默认行为不同,Adidas服务器对这两种请求的处理逻辑存在差异。
  • 如果你确实需要完全移除Connection头而非覆盖,可以通过自定义下载中间件实现,但一般来说,直接覆盖为keep-alive就足够解决当前问题。

内容的提问来源于stack exchange,提问作者Biswajit Chopdar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:14:56