在 python 中抓取 rotowire.com 玩家数据

问题描述 投票:0回答:1

我正在尝试从此页面获取/抓取击球统计表: https://www.rotowire.com/baseball/player/cj-abrams-16042

进一步查看该页面,我认为所有表格可能都是相同的,因此如果有一些 soup.find_all() 或其他东西可以得到其他表格,我们将不胜感激。

如果无法获取其他表格,如果至少能够获得统计数据审核,将不胜感激,因为似乎与当年的统计数据相似,如果我按页面上的“查看源代码”,我实际上可以看到这些值,但我没有从 driver.page_source 中获取在我的代码中。

我尝试了 requests.get() 但在解析 html 时没有看到任何表格或任何内容,而且由于页面正在加载统计信息,所以认为使用 selenium 可能会更好,但使用 selenium 仍然没有统计/表的迹象在数据中,我也尝试添加隐式等待(100),看看是否会给页面更多时间来加载表,但似乎也没有改变页面的视图源中的任何内容,它说加载一堆地方也尝试了WebDriverWait,但也没有改变帮助。

相关代码:

from bs4 import BeautifulSoup

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') 
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(options=chrome_options) 
url = "https://www.rotowire.com/baseball/player/cj-abrams-16042"
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
print(soup)
python selenium-webdriver web-scraping selenium-chromedriver
1个回答
0
投票

这个网站有一个API,你可以在浏览器发出的XHR请求上看到它。下面是一个例子

https://www.rotowire.com/baseball/ajax/player-page-data.php?id=16042&stats=batting

看起来你只需要提供已经在名称后面的 URL 上定义的玩家 ID

© www.soinside.com 2019 - 2024. All rights reserved.