首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用ESPN API提取实时数据

利用ESPN API提取实时数据
EN

Stack Overflow用户
提问于 2020-07-10 19:04:09
回答 3查看 1.7K关注 0票数 0

我一直在研究一种将实时数据拉到tkinter中的方法,并且已经达到了我对篮球的要求,但是使用ESPN API的布局和方式似乎与高尔夫不同。我知道我必须首先使用下面代码中的第一个URL来查找球员的id,但在此之后,我很难只为那个运动员提取和发布数据。如果有人能给我举一个例子,说明如何为一名特定的球员提供今天的ID,或者他们打了多少洞,那就太好了。我对Python相当陌生,因此任何帮助都将不胜感激。提前谢谢你。

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-10 19:27:11

第二个请求返回的JSON包含1个键("events"),该列表包含一个包含"Workday Charity“数据的项。随后,此数据包含一个关键的“竞赛”,该列表包含一个项目,其中包含事件的所有细节。因此,要遍历JSON以访问此事件的竞争对手数据,您需要执行以下操作:

代码语言:javascript
复制
competitors = data["events"][0]["competitions"][0]["competitors"]

然后访问特定玩家id的数据:

代码语言:javascript
复制
player_data = [i for i in competitors if i["id"] == id_][0]
票数 0
EN

Stack Overflow用户

发布于 2020-07-17 07:53:36

因此,在该player_data数据中(请参阅下面的图像以获得可视化),您需要转到['score']['displayValue']键。linescores也是如此。但是,注意linescores是一个列表,所以我怀疑每天他们都会附加最新的分数,因此,您需要调用列表中的最后一项。我也把它放进去了,但是我评论了一下

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
id: 3702
name: Rickie Fowler
Daily Score: +9
票数 0
EN

Stack Overflow用户

发布于 2020-07-20 06:47:09

在右边(如果是默认布局),应该有一个名为变量窗口的选项卡,或者变量显示,或者变量探索(类似的东西,不能准确记住名称,但它是“变量”)。然后,一旦存储了一些内容,您就可以双击它的内容了。是的,当我第一次学习的时候,它确实帮助我理解了json结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62840794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档