2017-06-13 93 views
0

對於上下文,我對網絡開發非常陌生。從API獲取數據和解析

是否有從this website獲取數據的更好方法,而不是從您從.read()獲取的字符串中刪除非數字字符,如shown in this solution,然後將這兩個數字分開?

如果python腳本正在調用API並獲取數據,那麼如何自動執行該過程以在一段時間(例如每分鐘)刷新數據?

回答

4

這個數據是JSON格式,你可以使用requests庫檢索它作爲一個Python字典:

>>> import requests 
>>> data = requests.get("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC,USD,EUR" 
       ).json() 
>>> data 
{'BTC': 0.1432, 'EUR': 343.04, 'USD': 388.04} 

如果要定期運行它有一些不同的選擇;你可以使用cron(或Windows上的taskscheduler),或者你可以使用time.sleep(60)的循環。

1

該數據是JSON格式,大致相當於Python中的字典。我不是Python專家,但我相信你需要導入json模塊並用.loads()解析數據 - 然後你可以作爲字典的屬性來訪問這些值。

因此,例如,您的數據是這樣的:

{"BTC":0.1434,"USD":387.92,"EUR":343.51} 

在腳本中,您將導入json,把數據放到一個變量,並解析它作爲一個字典:

import json 

json_string = '{"BTC":0.1434,"USD":387.92,"EUR":343.51}' 
parsed_json = json.loads(json_string) 

現在,如果你引用parsed_json,您可以訪問該值:

print parsed_json['BTC'] 
# 0.1434 

print parsed_json['EUR'] 
# 343.51 

等。

編輯 重新閱讀你的問題後,我覺得你想要的是被接受的答案和我的一些組合。這是我認爲你正在尋找(從接受的答案借款):

>>> import requests 

>>> data = requests.get("https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=BTC,USD,EUR" 
      ).json() 
>>> data['USD'] 
387.92 
>>> data['BTC'] 
0.1434 

通過requests.get()返回的數據已經被解析,所以沒有必要用json.loads()再次解析它。要訪問字典屬性的值,請輸入字典的名稱,然後鍵入括號中的屬性。