Python:ValueError:无法解码任何JSON对象

Python:ValueError:无法解码任何JSON对象,python,json,pandas,Python,Json,Pandas,我正在访问一个json数据,并希望在dataframe中转换它。 不幸的是,当json.loads(req.text) 下面是我的代码 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.

我正在访问一个json数据,并希望在dataframe中转换它。 不幸的是,当
json.loads(req.text)

下面是我的代码

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)

您实际上接收的不是JSON,而是Javascript文件。应用一个简单的正则表达式来匹配
[]
之间的所有数据,可以获得所需的结果

导入请求
导入json
进口稀土
req=请求。获取(“https://www.idx.co.id/Portals/0/StaticData/HomeHtml/data.js")
content=re.findall(r“=(\[.*?\]);”,请求文本)
data=json.load(内容[0])
打印(数据)

编辑:测试python regexp的有用网站是

Post req.text plesejavascript不是JSON。谢谢。你能进一步解释一下
re.findall(r“=(\[.*?\]);”,req.text)
以及json和javascript的区别吗?当然。它在=之后搜索所有数据,在;之前搜索括号内的所有数据;。例如,应用于
this_变量=[{“somedata”:1}]结果将是
[{“somedata”:1}]
(可JSON序列化)。有关更多详细信息,以及针对不同字符串进行测试,请参阅我添加到我的答案中的网站。JavaScript是一种编程语言。JSON是JavaScript对象表示法,它是一种数据格式。我想理解你的第一句话,它不是JSON,而是javascript文件。您能区分json和javascript在格式方面的区别吗?
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)