gpt4 book ai didi

python - 如何刮取 NFL 投注线?

转载 作者:行者123 更新时间:2023-11-30 22:04:20 26 4
gpt4 key购买 nike

我想从 https://www.bovada.lv/sports/football/nfl 中抓取所有 NFL 投注线/信息使用Python。

在 SO 社区的帮助下,我找到了 NFL 比赛的 api:https://www.bovada.lv/services/sports/event/v2/events/A/description/football/nfl

您可以在我的 Pastebin 上查看有关代码的更多信息: https://pastebin.com/tmAenaBD

这是迄今为止我的代码:

#Just a heads up...The code loads slow since it is printing the entire source

import requests

source = requests.get("https://www.bovada.lv/services/sports/event/v2/events/A/description/football/nfl").json()

print(source)

我可以在代码中看到数据,但是,我不知道如何解析它。有什么建议吗?

我正在寻找的投注线信息包括所有比赛的以下信息(本周总共 13 场比赛):

1) 比赛日期

2) 比赛时间

3) 球队比赛(每场两队)

4) 点差(有赔率)

5) 胜利又名“胜负盘”(有赔率)

6) 总分,又名“大小盘”(赔率)

这是第一场比赛的图片:

enter image description here

如果可能的话,我想要所有的游戏。

我是抓取新手,之前没有编码经验。我感谢我能得到的任何帮助,也感谢您的时间和努力。

最佳答案

你已经差不多了。您已经到达端点并将源转换为 python 对象(或 python 对象的集合),这就是 .json() 的作用。

所以现在您正在寻找一种系统的方法来访问所需的数据,但您不确定数据的结构......因此解决这个问题的最简单方法就是查看它。

Python 有一个内置功能可以帮助您找出对象是什么。你最好的 friend 是函数type()。让我们看看 source 是什么:

>>> type(source)
<class 'list'>

好吧,源是一个列表,因此我们可以测试它的长度:

>>> len(source)
1

好的,所以这是一个只有一个元素的列表。该列表中有什么内容?

>>> type(source[0])
<class 'dict'>

好的,所以source是一个list,里面有一个dict。该 dict 必须位于所有数据所在的位置,让我们将其隔离:

>>> data = source[0]

python dict 有一些方便的函数也可以进行检查。首先,我们可以看看 datakeys 是什么:

>>> data.keys()
dict_keys(['path', 'events'])

因此只有 2 个键,一个称为 path,另一个称为 events。当您查找每场比赛的投注信息时,让我们看一下 events 键,首先我们来看看它是什么:

>>> type(data['events'])
<class 'list'>
>>> len(data['events'])
13

好吧,大概是 NFL 比赛的列表,该列表的内容是什么类型:

>>> set(type(e) for e in data['events'])
{<class 'dict'>}

那么它们都是字典,它们的结构都相同吗?

>>> all(data['events'][0].keys() == e.keys() for e in data['events'][1:])
True

是的,结构都一样。其结构是怎样的?

>>> data['events'][0].keys()
dict_keys(['id', 'description', 'type', 'link', 'status', 'sport', 'startTime', 'live', 'awayTeamFirst', 'denySameGame', 'teaserAllowed', 'competitionId', 'notes', 'numMarkets', 'lastModified', 'competitors', 'displayGroups'])

再说一次,你必须先知道一切到底是什么,然后才能进行推理:

>>> for k, v in data['events'][0].items():
... print(k, type(v))
...
id <class 'str'>
description <class 'str'>
type <class 'str'>
link <class 'str'>
status <class 'str'>
sport <class 'str'>
startTime <class 'int'>
live <class 'bool'>
awayTeamFirst <class 'bool'>
denySameGame <class 'bool'>
teaserAllowed <class 'bool'>
competitionId <class 'str'>
notes <class 'str'>
numMarkets <class 'int'>
lastModified <class 'int'>
competitors <class 'list'>
displayGroups <class 'list'>

在这些键中,只有两个将集合作为值:competitorsdisplayGroups。因此,任何市场数据都必须包含在其中任何一个中。

我不会为您完成全部工作,但我希望您能明白。当您使用没有任何文档的外部数据源时,系统地检查对象,以便了解您正在处理的内容。

关于python - 如何刮取 NFL 投注线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53329150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com