You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeautifulSoup无法找到页面中存在的table元素问题求助

为什么爬不到目标表格?

目标页面的表格是JavaScript动态渲染生成的:你用requests库请求得到的只是页面的初始静态HTML,此时页面里的JS还没执行,schedulecanvas容器是空的,表格元素根本还没被生成,所以BeautifulSoup自然找不到对应的table标签。

解决办法

方法1:用Selenium模拟浏览器加载(快速上手)

Selenium能模拟真实浏览器的运行,等页面JS执行完、表格加载出来后,再获取完整的页面源码,这样就能拿到包含表格的HTML了。

示例代码:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.cbc.ca/sports/basketball/cebl/broadcast'

# 初始化Chrome浏览器(需要提前安装对应版本的ChromeDriver)
driver = webdriver.Chrome()
driver.get(url)

# 最多等10秒,直到表格元素出现
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, 'table'))
    )
    # 获取加载完成后的页面源码
    full_page = driver.page_source
    soup = BeautifulSoup(full_page, 'lxml')
    target_table = soup.find('table')
    print(target_table)
finally:
    # 用完记得关闭浏览器
    driver.quit()

方法2:直接抓接口拿数据(更高效)

打开浏览器F12开发者工具,切换到「Network」标签,刷新页面后筛选「XHR/Fetch」类型的请求,找到返回赛程表格数据的接口,直接用requests请求这个接口就能拿到JSON格式的原始数据,不用再解析HTML,效率更高。

内容的提问来源于stack exchange,提问作者Danish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:21:22