Как очистить таблицу с веб-сайта .cgi в фрейм данных?

Я хочу получить данные о теннисе с этой страницы: https://www.tennisabstract.com/cgi-bin/leaders.cgi для задания.

Мне нужно использовать библиотеки Python в Jupyter Notebook.

Когда я пытаюсь очистить эту страницу .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-страницах сайта:

0 1 0 &nbsp Статистика: Подача | Вернуться | Перерывы | Более 1 Нэн Нэн 2 Нэн Нэн
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Данные загружаются и отображаются динамически с помощью 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]
рк Игрок М М В-Л М Вт% СПВ SPW-InP Тузы Туз% ДФ ДФ% DF/2с 1-е место 1-й% 2-й% 2%-ИнП Хлд% Очки/ГС ПцЛ/СГ 0 1 Новак Джокович [SRB] 58 49-9 84,5% 69,1% 68,4% 436 8,7% 147 2,9% 8,1% 63,9% 76,2% 56,7% 61,6% 87,6% 6.1 1,9 1 2 Янник Синнер [ITA] 76 65-11 85,5% 69,1% 68,0% 485 8,3% 137 2,4% 6,0% 60,5% 76,8% 57,2% 60,9% 89,6% 6.1 1,9 2 3 Карлос Алькарас [ESP] 76 62-14 81,6% 67,2% 67,3% 319 5,6% 160 2,8% 8,3% 66,1% 72,6% 56,8% 61,9% 85,9% 6.2 2 ... 48 49 Чжижен Чжан [CHN] 50 26-24 52,0% 64,5% 63,3% 340 8,3% 119 2,9% 8,0% 63,9% 72,0% 51,2% 55,6% 80,7% 6.3 2.2 49 50 Дэниел Эванс [Великобритания] 40 16-24 40,0% 63,4% 64,4% 163 5,3% 135 4,4% 10,4% 57,6% 71,8% 52,1% 58,1% 79,2% 6.3 2.3 50 Нэн Средний Нэн Нэн 61,2% 65,7% 64,8% Нэн 8,6% Нэн 3,3% 9,0% 62,8% 73,7% 52,2% 57,3% 83,2% 6.3 2.2

Другие вопросы по теме