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

使用Scrapy 1.5.0与Python 2.7.14处理URL时遇爬虫错误求解决

常见Scrapy 1.5.0 + Python 2.7.14 URL处理错误及解决方案

由于你暂时没有提供FootLockerSpider的具体代码和完整错误信息,我先整理了几种这个环境下高频出现的URL相关问题及修复方案,你可以对照排查:

1. URL格式不合法(缺失协议、含非法字符)

典型错误表现

会抛出ValueError: Invalid URL,或者被Scrapy的OffsiteMiddleware拦截,提示Filtered offsite request to xxx。

修复方案

  • 确保所有请求URL包含完整协议头(http://或https://),比如不要写www.footlocker.com,必须写https://www.footlocker.com。
  • 对含特殊字符的URL做编码处理,用Python 2.7的urllib.quote()方法:
    import urllib
    raw_url = "https://www.footlocker.com/search?q=shoe size 10"
    # 保留URL中的关键分隔符,只编码特殊字符
    encoded_url = urllib.quote(raw_url, safe=':/?=&')
    yield scrapy.Request(encoded_url, callback=self.parse)
    

2. 相对URL未正确拼接为绝对URL

典型错误表现

请求发送到无效地址(比如把/product/123拼成了your-spider-domain.com/product/123),或者抛出Missing scheme in request url错误。

修复方案

用Scrapy自带的response.urljoin()方法拼接:

def parse(self, response):
    relative_url = response.css('a.product-link::attr(href)').extract_first()
    absolute_url = response.urljoin(relative_url)
    yield scrapy.Request(absolute_url, callback=self.parse_product)

或者直接使用response.follow()(Scrapy 1.5已支持),它会自动处理相对URL:

def parse(self, response):
    yield response.follow(response.css('a.product-link::attr(href)').extract_first(), callback=self.parse_product)

3. Python 2.7字符串编码问题导致URL乱码

典型错误表现

URL含中文/非ASCII字符时出现乱码,请求返回404或被服务器拒绝。

修复方案

Python 2.7中区分str和unicode类型,处理URL时先转为unicode再编码为UTF-8:

# 示例:处理含中文的搜索关键词
search_keyword = u"篮球鞋"
encoded_keyword = search_keyword.encode('utf-8')
url = "https://www.footlocker.com/search?q=" + urllib.quote(encoded_keyword)
yield scrapy.Request(url, callback=self.parse_search)

4. 重定向处理异常

典型错误表现

请求被多次重定向导致超时,或Scrapy无法自动处理重定向返回错误状态码。

修复方案

在settings.py中调整重定向配置:

# 设置最大允许重定向次数
REDIRECT_MAX_TIMES = 5
# 确保重定向中间件启用(默认启用,若被禁用需开启)
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
}

如果需要手动处理重定向,可以在请求中添加meta参数禁止自动重定向:

yield scrapy.Request(url, callback=self.handle_redirect, meta={'dont_redirect': True})

如果你能补充FootLockerSpider的代码片段和完整错误栈,我可以给出更精准的修复建议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:08:49