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

使用BeautifulSoup4无法获取网页完整表格内容的求助

解决动态表格爬取问题

你的问题核心是目标网站的表格内容是通过JavaScript动态加载的,requests只能获取页面初始的静态HTML,自然拿不到后续JS渲染的表格数据。下面给两种可行的解决方法:

方法一:用Selenium模拟浏览器加载

Selenium会启动真实浏览器并执行页面JS,能获取完整渲染后的页面内容。

步骤:

  1. 安装依赖:
pip install selenium

同时下载对应浏览器的驱动(比如ChromeDriver,需和你的Chrome版本匹配),并确保驱动在系统PATH里。

  1. 示例代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

url = 'https://www.omscentral.com/'
# 初始化Chrome浏览器(可替换为Firefox等)
driver = webdriver.Chrome()
driver.get(url)

# 等待表格内容加载完成
try:
    # 等待表格tbody元素出现,确认内容已渲染
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, 'tbody'))
    )
finally:
    # 获取完整页面源码后关闭浏览器
    page_source = driver.page_source
    driver.quit()

# 解析完整页面
soup = BeautifulSoup(page_source, 'html.parser')
tables = soup.find_all('table')
# 输出主表格内容(通常是第一个table)
print(tables[0])

方法二:直接请求数据接口(更高效)

动态加载的内容一般来自后端API,直接抓包找到接口后请求,比模拟浏览器更轻量。

步骤:

  1. 打开浏览器开发者工具(F12),切换到Network标签,刷新页面。
  2. 在筛选栏选择XHR或Fetch,查找返回课程数据的接口(比如路径类似/api/courses)。
  3. 查看接口的请求方式和参数,用requests直接请求获取JSON数据,再自行整理成表格格式。

示例代码(假设接口为https://www.omscentral.com/api/courses):

import requests

url = 'https://www.omscentral.com/api/courses'
response = requests.get(url)
course_data = response.json()

# 提取所需字段,比如课程名称、代码、评分
for course in course_data:
    print(f"课程名: {course['name']}, 代码: {course['code']}, 评分: {course['rating']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:15:41