POST请求返回Bad JSON,无限滚动网站爬取求助
解决POST请求返回"Bad JSON"的问题
出现Bad JSON错误,核心原因是你发送的POST请求没有携带符合要求的JSON格式请求体,或者请求头配置不正确。按以下步骤排查修复:
第一步:获取正确的请求体
回到浏览器开发者工具的Network面板,找到目标POST请求,切换到「Payload」(或「Request Body」)标签,复制里面的完整JSON内容。比如可能是类似这样的结构:{ "searches": [ { "collection": "nfts", "q": "", "sort_by": "rarity_rank:asc", "per_page": 24, "page": 1 } ] }第二步:配置requests请求
发送请求时,必须把上述JSON作为请求体发送,同时指定正确的请求头(至少包含Content-Type: application/json)。示例代码:import requests url = "https://search2.raritysniper.com/multi_search?use_cache=true&x-typesense-api-key=L1NoMW9ITm1SYWNodFk4cWpmaHphQWZTS2tuaTVFWDNGdmxjT1llcEpLdz1uNWhMeyJmaWx0ZXJfYnkiOiJwdWJsaXNoZWQ6dHJ1ZSJ9" # 从浏览器复制的请求体 payload = { "searches": [ { "collection": "nfts", "q": "", "sort_by": "rarity_rank:asc", "per_page": 24, "page": 1 } ] } headers = { "Content-Type": "application/json", "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" } response = requests.post(url, json=payload, headers=headers) print(response.json())第三步:处理无限滚动的分页逻辑
无限滚动加载通常通过page参数控制,后续请求只需要修改payload里的page值(比如从1改成2、3),就能获取下一页数据。
额外注意:
- 直接调用
requests.post(url)相当于发送空请求体,服务器无法解析,因此返回Bad JSON。 - 部分网站会校验
User-Agent,如果不加可能被拦截,建议带上浏览器的UA标识。
内容的提问来源于stack exchange,提问作者Jack Frost
相关产品推荐
相关产品推荐

