我正在尝试解析响应中的JSON数据:
如果使用我的浏览器转到:/url/gold/stuff/here
我在浏览器中得到一个回复:
window.data_gold = [{'gold':' room 123' } , {'better gold':'room 1234'} , {"best gold": "in cellar"}];
如何从响应中提取JSON数据
window.data_gold = json
我的代码:
import requests,json
url = '/url/gold/stuff/here'
r = requests.get(url,timeout = 30)
newJSON = r.text
以上返回所有文本,.json不起作用。
答案 0 :(得分:3)
尝试类似
的内容data = json.loads(r.text[19:-1])
编辑:它不喜欢这样,但这可行:
import ast
data = ast.literal_eval(r.text[19:-1])
给出了
[{'gold': ' room 123'},
{'better gold': 'room 1234'},
{'best gold': 'in cellar'}]
答案 1 :(得分:3)
这是一个看起来很丑陋的单行内容,可以将json从特定的响应中拉出来并将其放入dict中。
d = json.loads(r.text.split("=")[1].replace("'", '"')[:-1])
它将json本身从javascript语句中拉出来,用双引号替换单引号(因为json模块不接受单引号),然后将它提供给json模块。
编辑正如Hugh Bothwell所指出的那样,使用ast.literal_eval
代替json模块避免了单引号问题,所以你只剩下
d = ast.literal_eval(r.text.split("=")[1].strip(" ;"))
.strip(" ;")
将删除';'从头开始和空白。