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

Scrapy传递含嵌套字典的请求参数返回422错误,求排查原因

问题原因与解决方法

核心错误

你在Scrapy请求里误用了cb_kwargs参数——这个参数是用来给回调函数parse传递内部参数的,不会被拼接到URL的查询参数中,这就导致目标API根本没收到你需要的apiKey、filter等关键参数,所以返回422参数错误。而requests的params参数是专门用来构造URL查询字符串的,这就是两者的本质区别。

正确的Scrapy请求写法

Scrapy的Request类没有直接对应requests的params参数,你需要手动将参数编码为URL查询字符串,再拼接到请求URL后:

  1. 导入URL编码工具:
from urllib.parse import urlencode
  1. 构造带查询参数的请求:
# 编码参数为查询字符串
query_string = urlencode(params)
# 拼接完整URL
full_url = f"{self.url}?{query_string}"
# 发送请求
yield scrapy.Request(url=full_url, callback=self.parse, headers=self.headers)

额外注意事项

  • 确保params里的filter参数是正确转义后的JSON字符串(你当前示例里的"转义格式无需二次处理)。
  • urlencode会自动处理参数中的特殊字符编码,避免手动拼接出现格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:41