2014-02-10 55 views
6

我通過這個部分:使用Python從JSON API中提取數據

如何從該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 
     } 
    } 
} 
+4

如果有一個你喜歡的答案,請幫助社區和標記它通過單擊選中標記爲接受。 – scorpiodawg

回答

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') 
+0

爲什麼使用'simplejson'而不是'json'? – 2014-02-10 06:27:43

+0

我在使用您的代碼後會做什麼?它如何顯示我看到的networkdiff號碼? – Python2014

+0

@ Python2014'print'打印它。 – 2014-02-10 06:30:11

14

可以使用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'] 
+0

我喜歡你的方法與字典的方法。 – Python2014

+0

現在我有3個網址,我想要顯示'networkdiff'數據。如何創建一個包含3個不同名字的字典。 Joe,Jack,Jane,同時在這三個名字旁邊展示了三個'networkdiff'。 – Python2014