【问题标题】:HTTPResponse Error in urllib pythonurllib python中的HTTPResponse错误
【发布时间】:2018-07-15 16:23:31
【问题描述】:

我正在尝试使用 pandas 来阅读 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 中使用 pandas 版本 0.20.3 运行此代码 我也看到了这个帖子 - Retreiving data from a website

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

【问题讨论】:

    标签: python json pandas urllib3


    【解决方案1】:

    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)
    

    【讨论】:

    • 我仍然遇到错误 - AttributeError: 'int' object has no attribute 'values'
    猜你喜欢
    • 2011-07-07
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多