我正在尝试使用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)