如何使用BeautifulSoup使用表id提取表

时间:2018-05-10 05:23:20

标签: python beautifulsoup

我正在学习如何使用BeautifulSoup从https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html抓取表格。

这个特定页面有多个表,我希望能够根据表id提取特定的表。检查代码时,我可以看到每个表都有唯一的ID。

我尝试过以下操作,返回一个空列表:

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)

如果我按同一个标签中的表类搜索,我可以提取所有表格,所以我不确定为什么搜索特定的表格ID不能正常工作?

1 个答案:

答案 0 :(得分:0)

该表是通过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>