python - 在 Python 中一次抓取多个数据表
问题描述
我正在使用以下 NCAA 统计网站并希望从中获取数据:
https://stats.ncaa.org/rankings/change_sport_year_div
要获取我要抓取的具体数据,请单击链接,选择男子篮球运动,2019-2020 年和 Division III,然后单击球队统计按钮。在浏览了 html 之后,我能够从下拉菜单中找到我想要的所有统计信息。我想知道是否有可能使用 BeautifulSoup(甚至可能是 pd.read_html())来为每个类别抓取一个表。似乎我可能需要的所有信息都在下图中,但我不太确定如何实现 python 的工具来大写。这将比手动下载每个统计数据的 excel 表并将它们读入 pandas 更有效(并且不那么无聊)。谢谢你。
解决方案
检查您的情况,您应该使用一些表单数据向给定的 url 发出 post 请求,如下所示:
sport_code: MBB
academic_year: 2020.0
division: 3.0
ranking_period: 110.0
team_individual: T
game_high: N
ranking_summary: N
sport_code=MBB&academic_year=2020.0&division=3.0&ranking_period=110.0&team_individual=T&game_high=N&ranking_summary=N
如上所示格式化表单数据并调用curl,
curl -X POST -d "@formdata.txt" https://stats.ncaa.org/rankings/change_sport_year_div
如果你愿意,你也可以对requests
模块做同样的事情,只要确保表单数据的格式正确。
r = requests.post("https://stats.ncaa.org/rankings/change_sport_year_div",
data={"sport_code": "MBB",
"academic_year": 2020.0,
"division": 3.0,
"ranking_period": 110.0,
"team_individual": "T",
"game_high": "N",
"ranking_summary": "N"})