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

Python使用Scrapy发送POST请求获取JSON响应报错1001如何解决

问题修复方案

错误原因分析

返回Invalid format错误主要由以下几个可修复的问题导致:

  • 域名过滤规则配置错误,请求被Scrapy自动拦截
  • 请求头缺失必要字段,接口无法识别合法请求来源
  • 请求参数类型不匹配,部分字段传值格式不符合接口要求
  • 本地代码存在语法错误,影响响应处理

具体修复步骤

  1. 修正allowed_domains配置,添加请求接口的域名,避免Scrapy过滤合法请求
  2. 补充完整请求头,添加User-Agent、Referer等浏览器标准字段
  3. 修正参数类型错误,将字符串类型的page_size改为数字类型
  4. 修复响应存储的语法错误,正确处理bytes类型的响应内容

修正后完整代码

import scrapy
import json

class CodeSpider(scrapy.Spider):
    name = 'code'
    # 修正允许的域名列表
    allowed_domains = ['rapaport.com', 'sarvadajewels.com']

    def start_requests(self): 
        form_data = {
            "request":{
                "header":{
                    "raplink_access_key":"e7d7d61946804c579d02dab565371113",
                    "domain":"www.sarvadajewels.com"
                },
                "body":{
                    "search_type":"white",
                    "shapes":["round"],
                    "size_from":0.1,
                    "size_to":100,
                    "color_from":"D",
                    "color_to":"M",
                    "clarity_from":"IF",
                    "clarity_to":"I1",
                    "cut_from":"Excellent",
                    "cut_to":"Poor",
                    "polish_from":"Excellent",
                    "polish_to":"Poor",
                    "symmetry_from":"Excellent",
                    "symmetry_to":"Poor",
                    "labs":[],
                    "fancy_colors":[],
                    "price_total_from":0,
                    "price_total_to":7428404930,
                    "page_number":2,
                    # 修正为数字类型
                    "page_size":60,
                    "sort_by":"price",
                    "sort_direction":"asc",
                    "currency_code":"INR"
                }
            }
        }
        request_body = json.dumps(form_data)
        # 补充完整请求头
        headers = {
            'Content-Type': 'application/json; charset=UTF-8',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
            'Referer': 'https://www.sarvadajewels.com/'
        }
        yield scrapy.Request(
            'https://technet.rapaport.com/HTTP/JSON/RetailFeed/GetDiamonds.aspx',
            method="POST",
            body=request_body,
            headers=headers,
            callback=self.parse 
        )

    def parse(self, response):
        # 修复语法错误,直接用response.text获取字符串格式的响应内容
        with open('test.json', 'w', encoding='utf-8') as file:
            file.write(response.text)

额外排查提示

如果修改后依然返回格式错误,可按以下步骤验证:

  • 打开目标网站控制台,复制浏览器实际发送的请求body和代码参数逐字段对比,确认参数名、参数类型完全一致
  • 检查raplink_access_key是否过期,该类密钥通常会伴随用户会话更新
  • 确认是否需要携带Cookie,可在请求头中添加浏览器访问目标站后获取的Cookie值测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:30:03