Как извлечь таблицу, используя идентификатор таблицы, используя BeautifulSoup - PullRequest
0 голосов
/ 10 мая 2018

Я учусь очищать таблицы от https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html, используя BeautifulSoup.

Эта конкретная страница имеет несколько таблиц, и я хочу иметь возможность извлечь конкретную таблицу на основе идентификатора таблицы. При проверке кода я вижу, что каждая таблица имеет уникальный идентификатор.

Я пробовал следующее, которое возвращает пустой список:

import requests
from bs4 import BeautifulSoup
url="https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html"
page=requests.get(url)
soup=BeautifulSoup(page.content, 'html.parser')

table=soup.find_all('table', id='sortableTable0')
print(table)

Я могу извлечь все таблицы, если я буду искать по классу таблицы, который находится в том же теге, поэтому я не уверен, почему поиск определенного идентификатора таблицы не работает?

1 Ответ

0 голосов
/ 10 мая 2018

Эта таблица генерируется динамически с помощью JavaScript, поэтому вам нужно использовать что-то, что может с этим справиться. Один из вариантов в Python - использовать Selenium , как показано ниже:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html")

html = driver.page_source
soup = BeautifulSoup(html, "lxml")

table = soup.find_all('table', {'id':'sortableTable0'})
print(table)

Интересно, что у источника страницы есть следующий элемент перед div, содержащим таблицу:

<noscript>This page requires Javascript enabled to function<br><br></noscript>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...