使用Python从JSON API提取数据

12

我浏览了这个部分:

如何从该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
        }
    }
}

4
如果有您喜欢的答案,请通过点击复选框将其标记为已采纳,以帮助社区。请保持内容的准确性和原意,并使其更加易于理解。不提供其他信息或解释。 - scorpiodawg
2个回答

21
您可以使用 json 模块解析 Python 字典并直接获取值,方法如下:
import json
result = json.loads(url)  # result is now a dict
print '"networkdiff":', result['getpoolstatus']['data']['networkdiff']

要多次执行此操作(回答您在评论部分中的问题):

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']

我喜欢你使用字典方法的方式。 - Python2014
现在我有3个URL,我想获取“networkdiff”数据来显示。我该如何创建一个带有3个不同名称的字典。Joe、Jack、Jane,并同时在这三个名称旁边显示三个“networkdiff”。 - Python2014

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 - user1907906
我使用你的代码后下一步该怎么做?它如何显示给我看网络难度(networkdiff)数字? - Python2014
@Python2014 print 打印它。 - user1907906
simplejson 具有向后兼容性并且经常更新,您可以使用以下代码: try: import simplejson as json except ImportError: import json 以确保回退安全。 - Sar009
你可以通过pip安装simplejson,或者在Python 2.6+上直接使用json。 - Sar009
我不知道如何在Windows 7上安装simplejson,所以现在我要转向Ubuntu,因为它自带了。 - Python2014

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接