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

调用返回500错误的API爬取学校数据遇阻求助

解决POST请求返回500错误的问题

核心原因:缺少POST请求体

POST接口几乎都需要传递请求参数(请求体),你的代码只设置了请求头,没有向API发送搜索所需的核心参数,这是导致服务器返回500错误的关键原因。

获取正确请求体的方法

打开浏览器开发者工具(F12)切换到「网络」标签,重新加载目标页面,找到向/api/v1/search/发送的POST请求,查看「载荷」(Payload)部分,就能看到需要传递的参数格式。

以目标页面为例,正确的请求体JSON格式如下:

{
  "zoektermen": "rotterdam",
  "type": "middelbare-scholen",
  "weergave": "Lijst",
  "pagina": 1,
  "aantalPerPagina": 10
}

修改后的可运行代码示例

import requests

def data_fetch():
    url = "https://scholenopdekaart.nl/api/v1/search/"
    headers = {
        'accept': 'application/json, text/plain, */*',
        'content-type': 'application/json',
        'referer': 'https://scholenopdekaart.nl/zoeken/middelbare-scholen/?zoektermen=rotterdam&weergave=Lijst',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
    }
    # 传递必要的搜索参数
    payload = {
        "zoektermen": "rotterdam",
        "type": "middelbare-scholen",
        "weergave": "Lijst",
        "pagina": 1,
        "aantalPerPagina": 10
    }
    response = requests.post(url, headers=headers, json=payload)
    print(response.status_code)
    # 解析并提取目标数据
    if response.status_code == 200:
        data = response.json()
        for school in data.get('resultaten', []):
            print(f"学校名称: {school.get('naam')}, 邮箱: {school.get('email')}")

data_fetch()

额外排查点

  • CSRF Token验证:若仍报错,可在页面HTML中查找csrf-token元标签,将其值添加到请求头的X-CSRFToken字段。
  • 请求头格式:确保sec-ch-ua等字段与浏览器请求完全一致,注意引号的正确使用(可直接复制浏览器中的请求头)。
  • 参数编码:使用json=payload而非data=payload,让requests自动处理JSON编码和Content-Type设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:05:22