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

调用res.json()报JSONDecodeError: Expecting value问题求解

问题排查与解决方法

报错根因

你请求的URL返回的是JavaScript文件内容,不是标准JSON格式,直接调用res.json()方法无法解析,所以触发JSONDecodeError。如果请求被站点反爬拦截返回空内容,也会出现line 1 column 1 (char 0)的报错。

步骤1:验证请求是否正常返回内容

首先加请求头模拟浏览器发起请求,避免被反爬拦截,同时打印响应状态码和前1000个字符确认内容结构:

import requests

# 模拟浏览器请求头
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"
}
res = requests.get(
    'https://www.expresslanes.com/themes/custom/transurbangroup/js/on-the-road/entry_exit.js?v=1.x',
    headers=headers
)
# 确认请求状态码为200代表请求成功
print("响应状态码:", res.status_code)
# 打印前1000个字符查看JS内容结构
print("响应内容前1000字符:\n", res.text[:1000])

步骤2:提取JS中的JSON数据

该JS文件以变量 = JSON数据的格式存储站点点位数据,用正则匹配提取出JSON部分后再解析即可:

import re
import json

# 匹配JS中变量赋值的JSON部分,匹配规则可根据打印的实际内容调整
pattern = re.compile(r'var\s*entryExitPoints\s*=\s*(.*?);\s*$', re.S)
match_result = pattern.search(res.text)

if match_result:
    # 提取JSON字符串并解析
    json_content = match_result.group(1).strip()
    target_data = json.loads(json_content)
    print("数据类型:", type(target_data))
    # 后续可直接处理target_data
else:
    print("未匹配到目标JSON数据,请根据实际JS结构调整正则匹配规则")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:27:04