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

Selenium配合BeautifulSoup获取完整HTML遇超时问题排查

网页爬取问题解决方案

一、Selenium TimeoutException 解决

  • 延长等待时长:原代码设置的5秒等待时间可能不足以让页面完成渲染,建议调整为10-15秒。
  • 优化等待条件:原代码等待表格元素可见,但有时表格框架先加载、内容后渲染,换成等待表格内的tbody元素存在会更精准,确保数据已加载。
  • 修正后的代码:
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

driver = webdriver.Edge()
url = 'https://ffp.hnair.com/FFPClub/en/hqjf/hkjl/gszl/201809/t20180910_25329.html'
driver.get(url)

# 延长等待时间至10秒,等待表格tbody节点加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".HcTable tbody")))

soup = BeautifulSoup(driver.page_source, 'html.parser')
target_table = soup.find('table', class_='HcTable')
print(target_table.prettify())

# 关闭浏览器进程
driver.quit()

二、requests+BeautifulSoup无法获取tbody内容的原因

类名HcTable是正确的,问题出在页面表格内容是JavaScript动态渲染的:仅用requests请求只能拿到页面初始HTML(仅包含表格框架),tbody内的实际数据是页面加载后通过JS动态生成或AJAX请求拉取的,所以静态爬取不到。必须借助浏览器渲染工具(如Selenium、Playwright)才能获取完整渲染后的页面内容。

额外优化建议

如果想避免使用浏览器渲染工具,可以尝试抓包获取数据接口:打开浏览器开发者工具(F12)→ 切换到Network标签 → 刷新页面,筛选XHR/fetch类型请求,找到返回表格数据的接口,直接请求该接口获取数据,效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:13:11