2017-03-06 50 views
1

我需要从json页面获取数据并将其转换为列表。Python:无法从json获取数据并转换为列表

import json 
import requests 

j = requests.get('http://www.example.com/Portals/0/StaticData/data.js') 
abc = json.loads(j.content) 

然而,发生错误

ValueError: No JSON object could be decoded 

我需要的是

mylist = ['AALI','ABBA','ABDA'.......] 
mylist1 = ['Astra Agro Lestari Tbk','Mahaka Media Tbk','Asuransi Bina Dana Arta Tbk',.......] 
+0

这端点(即'idx.​​co.id ...'URL)不返回JSON,但有一个变量赋值的JavaScript代码'VAR symbolsCode = [{ “'...你可能想看看这个线程?:http://stackoverflow.com/questions/390992/javascript-parser-in-python也许它有帮助 – BorrajaX

回答

2

您没有一个有效的JSON回来,你可以与json阅读它之前清理模块:

js = j.content.decode("utf-8").split("=")[-1].strip().strip(';') 

json.loads(js) 

#[{'code': 'AALI', 'name': 'Astra Agro Lestari Tbk'}, 
# {'code': 'ABBA', 'name': 'Mahaka Media Tbk'}, 
# {'code': 'ABDA', 'name': 'Asuransi Bina Dana Arta Tbk'}, 
# {'code': 'ABMM', 'name': 'ABM Investama Tbk'}, 
# {'code': 'ACES', 'name': 'Ace Hardware Indonesia Tbk'}, 
# ... 

要解压缩的结果为两个列表:

mylist, mylist1 = zip(*((d['code'], d['name']) for d in json.loads(js))) 
+0

它的工作原理,但仍然有'你'在mylist和mylist1。另外,你可以添加'js = j.content.decode(“utf-8”)的解释。split(“=”)[ - 1] .strip()。strip(';')'和'json.loads (JS)'? – bkcollection