我一直在研究一种将实时数据拉到tkinter中的方法,并且已经达到了我对篮球的要求,但是使用ESPN API的布局和方式似乎与高尔夫不同。我知道我必须首先使用下面代码中的第一个URL来查找球员的id,但在此之后,我很难只为那个运动员提取和发布数据。如果有人能给我举一个例子,说明如何为一名特定的球员提供今天的ID,或者他们打了多少洞,那就太好了。我对Python相当陌生,因此任何帮助都将不胜感激。提前谢谢你。
import requests
import time
def get_data(query):
url = 'https://site.web.api.espn.com/apis/common/v3/search?region=us&lang=en&query={}&limit=5&mode=prefix&type=player'.format(query)
r = requests.get(url)
data = r.json()
id_ = data['items'][0]['id']
name = data['items'][0]['displayName']
url = 'https://site.web.api.espn.com/apis/site/v2/sports/golf/leaderboard?league=pga'
r = requests.get(url)
data = r.json()
DailyScore = data['competition']['']['']
return (id_,name,DailyScore)
# --- main ---
query = 'Rickie'
print('id:', id_)
print('name:',name)
print('Daily Score:',DailyScore)发布于 2020-07-10 19:27:11
第二个请求返回的JSON包含1个键("events"),该列表包含一个包含"Workday Charity“数据的项。随后,此数据包含一个关键的“竞赛”,该列表包含一个项目,其中包含事件的所有细节。因此,要遍历JSON以访问此事件的竞争对手数据,您需要执行以下操作:
competitors = data["events"][0]["competitions"][0]["competitors"]然后访问特定玩家id的数据:
player_data = [i for i in competitors if i["id"] == id_][0]发布于 2020-07-17 07:53:36
因此,在该player_data数据中(请参阅下面的图像以获得可视化),您需要转到['score']['displayValue']键。linescores也是如此。但是,注意linescores是一个列表,所以我怀疑每天他们都会附加最新的分数,因此,您需要调用列表中的最后一项。我也把它放进去了,但是我评论了一下

import requests
def get_data(query):
url = 'https://site.web.api.espn.com/apis/common/v3/search?region=us&lang=en&query={}&limit=5&mode=prefix&type=player'.format(query)
r = requests.get(url)
data = r.json()
id_ = data['items'][0]['id']
name = data['items'][0]['displayName']
url = 'https://site.web.api.espn.com/apis/site/v2/sports/golf/leaderboard?league=pga'
r = requests.get(url)
data = r.json()
competitors = data["events"][0]["competitions"][0]["competitors"]
player_data = [i for i in competitors if i["id"] == id_][0]
DailyScore = player_data['score']['displayValue']
#DailyScore = player_data['linescores'][-1]['displayValue']
return (id_,name,DailyScore)
# --- main ---
query = 'Rickie'
id_, name, DailyScore = get_data(query)
print('id:', id_)
print('name:',name)
print('Daily Score:',DailyScore)输出:
id: 3702
name: Rickie Fowler
Daily Score: +9发布于 2020-07-20 06:47:09
在右边(如果是默认布局),应该有一个名为变量窗口的选项卡,或者变量显示,或者变量探索(类似的东西,不能准确记住名称,但它是“变量”)。然后,一旦存储了一些内容,您就可以双击它的内容了。是的,当我第一次学习的时候,它确实帮助我理解了json结构。
https://stackoverflow.com/questions/62840794
复制相似问题