Python爬虫如何发送request payload参数解决API请求400错误
错误原因
- 请求方法选择错误:
getFilteredInventory接口要求使用POST请求提交参数,你当前用的GET请求仅支持传递URL后缀的查询参数,无法提交符合接口要求的请求体payload。 - 参数传递方式错误:你使用
params参数传递payload,该参数会把数据序列化后拼接在URL末尾,而该接口要求payload放在请求体中以JSON格式提交。
修复后的代码
import requests payload = {"Search": {"FuelType": ["Diesel"]}, "Sort": {"Featured": "true"}} url = "https://easyauto123.com.au/api/v1/getFilteredInventory" # 模拟浏览器请求头,避免被反爬规则拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } # 用POST请求提交JSON格式payload response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: data = response.json() # 后续处理返回数据 else: print(f"请求失败,状态码:{response.status_code},返回信息:{response.text}")
补充说明
如果调整后仍请求失败,可以打开浏览器开发者工具的网络面板,找到该接口的实际请求,把请求头里的Referer、Cookie等字段也复制到代码的headers参数中,部分站点会校验这些字段来拦截爬虫请求。
内容的提问来源于stack exchange,提问作者mukul dhiman
相关产品推荐
相关产品推荐

