我想从此页面抓取网球数据:https://www.tennisabstract.com/cgi-bin/leaders.cgi 任务。
我需要在 Jupyter Notebook 中使用 python 库。
当我尝试抓取此 .cgi 页面时,我无法在表中获取任何数据。有没有办法抓取 .cgi 页面?
我正在尝试的代码是:
url = "https://www.tennisabstract.com/cgi-bin/leaders.cgi"
response = requests.get(url, headers={"User-Agent": "XY"})
#response
page = response.content
scraping = BeautifulSoup(page, "lxml")
pd.set_option('display.max_rows', None)
table = BeautifulSoup(response.content, "lxml")
table = table.find_all("table")
df = pd.read_html(str(table))
df = df[1]
df
我得到的结果是(当我使用 df[0] 时它会发生变化,并且在 df[2] 处失败,它适用于网站中 html 页面上的其他表:
提前谢谢您!
数据由 JavaScript 动态加载和渲染,因此您不会从静态响应中获取表格。
您可以尝试从https://www.minorleaguesplits.com/tennisabstract/cgi-bin/jsmatches/leadersource.js
获取并处理数据尝试模仿浏览器,例如selenium 并使用渲染的源代码版本
from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome()
url = f'https://www.tennisabstract.com/cgi-bin/leaders.cgi'
driver.get(url)
pd.read_html(driver.page_source, attrs={'id':'matches'})[0]