urllib 中的 HTTPResponse 错误 python

HTTPResponse Error in urllib python

我正在尝试使用 pandas 来阅读 coinmarketcap API 。 我使用上面的 link 来使用 json_normalize 形成一个基本查询,但我收到以下错误 -

'HTTPResponse' object does not support indexing .

我的查询:-

from urllib.request import urlopen
import pandas as pd

pd.io.json.json_normalize(urlopen('https://api.coinmarketcap.com/v2/ticker/?limit=10'))

输出:-

TypeError: 'HTTPResponse' object does not support indexing

我是 运行 Jupyter Notebook 中的这段代码 pandas 版本 0.20.3 我也看到了这个 post - Retreiving data from a website

但我仍然无法解决我的问题。 请告诉如何处理这个问题。此外,我希望 name 字段作为索引列,由于嵌套 json.

我无法获得

urlopen 生成一个 HttpResponse 对象,而不是 json 字符串。您需要调用其 read 方法来获取 json.

改变

pd.io.json.json_normalize(urlopen('https://api.coinmarketcap.com/v2/ticker/?limit=10'))

pd.io.json.json_normalize(urlopen('https://api.coinmarketcap.com/v2/ticker/?limit=10').read())

更新

json_normalizeexpects deserialised json,所以你需要先载入json再传递给json_normalize

resp = urlopen('https://api.coinmarketcap.com/v2/ticker/?limit=10')
data = json.load(resp)
pd.io.json.json_normalize(data)