从API获取数据并解析

2024-05-19 20:12:01 发布

您现在位置:Python中文网/ 问答频道 /正文

对于上下文,我对web开发还很陌生。

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

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


Tags: 方法字符串in脚本apiwebread过程
3条回答

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

此数据是JSON格式的,您可以使用^{}库将其作为Python dict检索:

>>> 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 responne从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?。我希望这对你有帮助

相关问题 更多 >