我正在学习如何使用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不能正常工作?
答案 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>