我正在寻找一个数据科学项目,在该项目中,我将能够总结球员们就读的大学的梦幻足球分数(例如,阿拉巴马州有56名NFL活跃球员,因此我将通过一个数据库,将他们所有的梦幻分数加起来,与其他学校进行比较)
我在看网站:
https://fantasydata.com/nfl/fantasy-football-leaders?season=2020&seasontype=1&scope=1&subscope=1&aggregatescope=1&range=3
我打算用漂亮的汤来刮去一排排球员和统计数据,最终是梦幻足球分数
然而,我很难弄清楚如何提取球员的大学母校。为此,我必须:
- 单击每个“玩家”名称
- 将数百名NFL球员的每一个侧面都划一行“大学”
- 将所有这些信息放在它自己的列中李>
有什么建议吗
Tags:
我同意,如果他们在那里,API是一条路要走。我的第二个“go to”是}(它在引擎盖下使用BeautifulSoup解析
pandas
{<table>
标记。这里有一个替代解决方案,使用ESPNs api获取团队花名册链接,然后使用pandas从每个链接中提取表。省去了必须迭代每个玩家才能获取学院的麻烦(据我所知,nfl.com以前有一个api返回所有玩家,但现在不再公开了)代码:
输出:
不需要Selenium或其他无头自动化浏览器。那太过分了
如果查看浏览器的网络流量,您会注意到浏览器向这个RESTAPI端点发出POST请求:https://fantasydata.com/NFL_FantasyStats/FantasyStats_Read
如果POST请求格式正确,API将使用JSON响应,其中包含关于每个玩家的信息。通常,这些信息将用于使用JavaScript异步填充DOM。那里有很多信息,但不幸的是,学院信息不是JSON响应的一部分。但是,有一个字段
PlayerUrlString
,它是给定玩家个人资料页面的相对URL,其中确实包含学院名称。因此:对于响应JSON中的每个播放器:
代码:
输出:
您还可以在
data
字典中编辑pageSize
POST参数。50
对应于JSON响应中前50个参与者的信息(根据其他POST参数设置的过滤器)。更改此值将在JSON响应中产生更多或更少的参与者相关问题 更多 >
编程相关推荐