gpt4 book ai didi

python - 使用 Python 抓取 NFL.com 梦幻足球预测

转载 作者:行者123 更新时间:2023-12-01 01:42:00 27 4
gpt4 key购买 nike

我正在寻找 http://fantasy.nfl.com/research/projections 上的数据使用 Python 的 Beautiful Soup 和 requests 库将其转换为简单的 pandas 数据框架。我使用了以下代码:

a = "http://fantasy.nfl.com/research/projections"
req = requests.get(a)
soup = bs4.BeautifulSoup(req.text,"html.parser")

我的目标是每周抓取每个职位的数据。然而由此返回的数据是2018赛季的总数。看起来没有任何 split 。如果选择“第 1 周”选项(例如),如何将其拆分,以便显示我抓取的数据。

最佳答案

您可以通过解析分页部分的 URL 来轻松完成此操作。

您可以看到他们有端点statWeek=。我们只需插入我们想要的星期并从该页面获取结果即可。下面是一个示例脚本,它获取前 25 周的玩家姓名、幻想点数(预计?)和周数,并将其保存在 Pandas 数据框中。

def get_weekly_players(res):
res_list = list()
week = url.split('statWeek=')[1]
player_rows = res.find_all('tr')
for row in player_rows:
name = row.find('a', 'playerCard')
points = row.find('td', 'stat_30')
if name and points:
res_list.append((name.text, float(points.text), int(week)))
return res_list

我们定义一个函数来从解析的 HTML 中提取所需的信息。

然后,我们只需循环遍历周数并将元组结果扩展为列表。

all_res = list()
for week in range(0, 25):
url = '''http://fantasy.nfl.com/research/projections?position=O&sort=projectedPts&statCategory=projectedStats&statSeason=2018&statType=weekProjectedStats&statWeek={}'''.format(week)
req = requests.get(url)
soup = BeautifulSoup(req.text,"html.parser")
res = get_weekly_players(soup)
all_res.extend(res)

然后我们可以将结果传递给 Pandas 数据帧构造函数,我们就完成了。

player_df = pd.DataFrame(all_res, columns=['player', 'points', 'week'])

您可以看到我们拥有所有 25 周的结果。

player_df.describe()
points week
count 625.00000 625.000000
mean 3.22840 12.000000
std 0.37989 7.216878
min 2.14000 0.000000
25% 3.17000 6.000000
50% 3.30000 12.000000
75% 3.40000 18.000000
max 3.66000 24.000000

关于python - 使用 Python 抓取 NFL.com 梦幻足球预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51785640/

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