使用 Python 从 JSON API 中提取数据 [重复]

Posted

技术标签:

【中文标题】使用 Python 从 JSON API 中提取数据 [重复]【英文标题】:Extract data from JSON API using Python [duplicate] 【发布时间】:2014-03-07 08:57:07 【问题描述】:

我通过这部分:

如何从该 URL 中提取数据?我只想打印出"networkdiff": 58954.60268219

from urllib import urlopen

url = urlopen('http://21.luckyminers.com/index.php?page=api&action=getpoolstatus&api_key=8dba7050f9fea1e6a554bbcf4c3de5096795b253b45525c53562b72938771c41').read()

print url

这是 API 显示的 print url 命令的结果:


    "getpoolstatus": 
        "version": "1.0.0",
        "runtime": 16.618967056274,
        "data": 
            "pool_name": "21 Coin Pool @ Luckyminers.com",
            "hashrate": 485426748,
            "efficiency": 98.1,
            "workers": 14,
            "currentnetworkblock": 12025,
            "nextnetworkblock": 12026,
            "lastblock": 12023,
            "networkdiff": 58954.60268219,
            "esttime": 521.61956775542,
            "estshares": 241478052.58625,
            "timesincelast": 427,
            "nethashrate": 485426748
        
    

【问题讨论】:

如果有您喜欢的答案,请帮助社区并通过单击复选标记将其标记为已接受。 【参考方案1】:

您可以使用 json 模块解析 Python 字典并直接获取值,如下所示:

import json
result = json.loads(url)  # result is now a dict
print '"networkdiff":', result['getpoolstatus']['data']['networkdiff']

多次执行此操作(在 cmets 部分回答您的问题):

import json
import urllib

urls = 'joe': 'url1', 'jack': 'url2', 'jane': 'url3'
for who in urls.keys():
    url = urllib.urlopen(urls[who])
    result = json.loads(url)  # result is now a dict
    print 'For %s: "networkdiff":' % who, result['getpoolstatus']['data']['networkdiff']

【讨论】:

我喜欢你的字典方法。 现在我有 3 个 URL,我想要显示“networkdiff”数据。如何创建具有 3 个不同名称的字典。 Joe、Jack、Jane 并同时在这 3 个名字旁边显示三个“networkdiff”。【参考方案2】:

将响应转换为json,然后读取

from urllib import urlopen
import simplejson as json

url = urlopen('http://21.luckyminers.com/index.php?page=api&action=getpoolstatus&api_key=8dba7050f9fea1e6a554bbcf4c3de5096795b253b45525c53562b72938771c41').read()
url = json.loads(url)

print url.get('getpoolstatus').get('data').get('networkdiff')

【讨论】:

为什么使用simplejson 而不是json 使用您的代码后我接下来要做什么?它如何显示 networkdiff 编号供我查看? @Python2014 print 打印出来。 simplejson 具有向后兼容性并且经常更新,您可以使用 try: import simplejson as json except ImportError: import json for fallback safety。 你可以通过 pip install simplejson 安装 simplejson 或者如果在 python 2.6+ 上可以简单地使用 json

以上是关于使用 Python 从 JSON API 中提取数据 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 从 Twitter 流 API 中提取特定的 JSON 字段

使用python从json中搜索和提取特定数据

在 Python 中从数组中提取 JSON ID

如何从嵌套的 json 值中提取特定值。?

尝试使用 youtube api 从 json 中提取视频 ID

使用 JSON 从 API 中提取特定值的问题