从API获取数据并解析

时间:2017-06-13 23:46:40

标签: python api

对于上下文,我是网络开发的新手。

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

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

3 个答案:

答案 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?。我希望这有用