从API获取数据和解析

问题描述:

对于上下文,我对网络开发非常陌生。从API获取数据和解析

是否有从this website获取数据的更好方法,而不是从您从.read()获取的字符串中删除非数字字符,如shown in this solution,然后将这两个数字分开?

如果python脚本正在调用API并获取数据,那么如何自动执行该过程以在一段时间(例如每分钟)刷新数据?

这个数据是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)的循环。

Python有能力将json resposne从api解析成字典结果 https://pythonspot.com/en/json-encoding-and-decoding-with-python/给出了关于使用json的一个很好的教程。要自动运行每分钟看看What is the best way to repeatedly execute a function every x seconds in Python?。我希望这是有帮助的

该数据是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()再次解析它。要访问字典属性的值,请输入字典的名称,然后键入括号中的属性。