对于上下文,我是网络开发的新手。
是否有更好的方法从this website获取数据,而不是从.read()中删除非数字字符,例如shown in this solution,然后将这两个数字分开?< / p>
如果python脚本正在调用API并获取数据,那么如何在一段时间内(例如每分钟)自动执行该过程以刷新数据?
答案 0 :(得分:7)
此数据采用JSON格式,您可以使用requests
库将其作为Python dict检索:
<p id="dateText">
</p>
如果你想定期运行,有几个不同的选择;你可以使用cron(或windows上的taskscheduler),或者你可以使用>>> 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}
的循环。
答案 1 :(得分: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()
对其进行解析。要访问字典属性的值,请键入字典的名称,然后键入括号中的属性。
答案 2 :(得分:0)
Python能够将来自api的json resposne解析为字典结果 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?。我希望这有用