我正在訪問一個json數(shù)據(jù),并希望在pandas數(shù)據(jù)幀中轉(zhuǎn)換它。不幸的是,在以下情況下發(fā)生錯誤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條經(jīng)驗 獲得超13個贊
您實際上收到的不是 JSON,而是 Javascript 文件。應(yīng)用簡單的正則表達式匹配所有數(shù)據(jù)之間可以達到預期的結(jié)果。[]
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)
編輯:一個有用的網(wǎng)站來測試python正則表達式是 https://pythex.org/
添加回答
舉報
0/150
提交
取消