urllib-python中出现HTTPResponse错误



我正在尝试使用panda来阅读coinmarketcap API。https://stackoverflow.com/a/40589031/7159086我使用上面的链接使用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的熊猫版0.20.3中运行此代码我也看到了这篇文章-从网站检索数据

但我还是没能解决我的问题。请告诉我如何解决这个问题。此外,我希望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_normalize需要取消序列化的json,因此在将json传递给json_normalize之前需要加载json

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

相关内容

最新更新