Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从JSON API提取数据_Python_Json_Api_Openurl - Fatal编程技术网

使用Python从JSON API提取数据

使用Python从JSON API提取数据,python,json,api,openurl,Python,Json,Api,Openurl,我讲了这一部分: 如何从该URL提取数据?我只想打印出“networkdiff”:58954.60268219 from urllib import urlopen url = urlopen('http://21.luckyminers.com/index.php?page=api&action=getpoolstatus&api_key=8dba7050f9fea1e6a554bbcf4c3de5096795b253b45525c53562b72938771c41').re

我讲了这一部分:

如何从该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根据打印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
        }
    }
}

将响应转换为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')

您可以使用
json
模块解析Python字典,并获得正确的值,如下所示:

import json
result = json.loads(url)  # result is now a dict
print '"networkdiff":', result['getpoolstatus']['data']['networkdiff']
要多次执行此操作(在“评论”部分回答您的问题):


为什么要使用
simplejson
而不是
json
?使用您的代码后,我接下来要做什么?它是如何显示networkdiff编号的,以便我查看?@Python2014
print
打印它。simplejson具有向后兼容性,并且经常更新。您可以使用try:import simplejson作为json导入,除了ImportError:import json以确保回退安全。您可以通过pip安装simplejson,或者在python 2.6+上安装simplejson像使用字典方法一样使用jsonI。现在我有3个URL,我想获取要显示的“networkdiff”数据。如何创建具有3个不同名称的词典。Joe、Jack、Jane,同时在这三个名字旁边显示三个“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']