Python Web 报废 .cgi 表

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

我想从此页面抓取网球数据: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 页面上的其他表:

提前谢谢您!

python web-scraping data-science
1个回答
0
投票

数据由 JavaScript 动态加载和渲染,因此您不会从静态响应中获取表格。

  1. 您可以尝试从https://www.minorleaguesplits.com/tennisabstract/cgi-bin/jsmatches/leadersource.js

    获取并处理数据
  2. 尝试模仿浏览器,例如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]
© www.soinside.com 2019 - 2024. All rights reserved.