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

调用mvg-api出现JSONDecodeError的解决方法及替代API咨询

解决mvg_api调用JSONDecodeError问题及替代方案

问题重现

代码示例:

import mvg_api
station_id = mvg_api.get_id_for_station("Hauptbahnhof")
print(station_id)

触发的错误栈:

Traceback (most recent call last):
  File "/Users/"name"/PycharmProjects/MVG/venv/lib/python3.9/site-packages/requests/models.py", line 971, in json
    return complexjson.loads(self.text, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/"name"/PycharmProjects/MVG/main.py", line 2, in <module>
    station_id=mvg_api.get_id_for_station("Hauptbahnhof")
  File "/Users/name/PycharmProjects/MVG/venv/lib/python3.9/site-packages/mvg_api/__init__.py", line 148, in get_id_for_station
    station = get_stations(station_name)[0]
  File "/Users/name/PycharmProjects/MVG/venv/lib/python3.9/site-packages/mvg_api/__init__.py", line 202, in get_stations
    results = get_locations(station)
  File "/Users/name/PycharmProjects/MVG/venv/lib/python3.9/site-packages/mvg_api/__init__.py", line 194, in get_locations
    results = _perform_api_request(url)
  File "/Users/name/PycharmProjects/MVG/venv/lib/python3.9/site-packages/mvg_api/__init__.py", line 67, in _perform_api_request
    return resp.json()
  File "/Users/name/PycharmProjects/MVG/venv/lib/python3.9/site-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

错误原因分析

这个错误说明API返回的内容不是有效的JSON格式,甚至可能是空响应。常见原因包括:

  • mvg_api库依赖的MVG API端点已失效:第三方库可能没跟上官方API的更新,导致请求返回404/403错误页面(HTML格式)而非JSON。
  • 请求头缺失:官方API可能要求特定的User-Agent或身份验证信息,旧版本库未添加这些头,导致被拦截。
  • 网络问题:请求未成功到达服务器,返回空内容。

解决方法

  1. 更新mvg_api库
    先尝试升级到最新版本,可能开发者已修复API端点问题:

    pip install --upgrade mvg_api
    
  2. 调试API响应内容
    自己写测试请求,打印响应状态码和原始内容,确认问题:

    import requests
    
    def test_mvg_api():
        url = "https://www.mvg.de/api/fahrinfo/location/queryWeb?q=Hauptbahnhof"
        resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
        print("Status Code:", resp.status_code)
        print("Response Text:", resp.text)
    
    test_mvg_api()
    

    如果返回403/404,说明API端点已变更;如果返回HTML,需调整请求头(比如添加模拟浏览器的User-Agent)。

  3. 直接调用官方MVG API
    如果第三方库失效,直接对接官方API。官方MVG开放API需要注册获取密钥,支持站点查询、实时班次等功能,请求时需携带正确的请求头和API密钥。

替代API推荐

  • MVG官方开放API:慕尼黑交通局官方提供,数据最准确,支持站点信息、实时班次、路线规划等,需注册获取访问权限。
  • OpenTripPlanner:开源公共交通规划工具,支持慕尼黑地铁数据,可获取站点、路线、实时信息,基础功能无需密钥。
  • Transitland:聚合全球公共交通数据的平台,包含慕尼黑地铁的静态和实时数据,适合多城市交通项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:50:20