我正在访问一个json数据,并希望在pandas数据帧中转换它。不幸的是,在以下情况下发生错误json.loads(req.text)ValueError: No JSON object could be decoded下面是我的代码。HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36", "Origin": "https://www.idx.co.id"}req = requests.get("https://www.idx.co.id/Portals/0/StaticData/HomeHtml/data.js", headers=HEADERS)stocks = json.loads(req.text)columns = ['code', 'name']df = pd.DataFrame([{k: v for k,v in d.items() if k in columns} for d in stocks, columns = columns)
1 回答

开心每一天1111
TA贡献1836条经验 获得超13个赞
您实际上收到的不是 JSON,而是 Javascript 文件。应用简单的正则表达式匹配所有数据之间可以达到预期的结果。[]
import requests
import json
import re
req = requests.get("https://www.idx.co.id/Portals/0/StaticData/HomeHtml/data.js")
content = re.findall(r"= (\[.*?\]);", req.text)
data = json.loads(content[0])
print(data)
编辑:一个有用的网站来测试python正则表达式是 https://pythex.org/
添加回答
举报
0/150
提交
取消