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

Python Selenium无法提取Zaubacorp网站表格数据,请求排查问题

问题排查与修正方案

1. 表格定位条件完全错误

原代码判断表格的条件是'list-group-item' in t.get_attribute('class'),但list-group-item是表格内**链接标签<a>**的类名,并非目标表格的类名。目标表格的类属性为table table-hover table-striped,这个条件直接导致无法匹配到正确表格。

2. 等待机制不够可靠

仅依赖隐式等待可能无法确保表格完全加载完成,尤其在headless模式下页面渲染速度不稳定,容易出现元素未加载完成就执行查找的情况。

3. Headless模式兼容性缺失

部分网站会对headless模式进行限制,缺少必要的浏览器环境模拟参数,可能导致页面布局异常或元素加载失败。


修正后的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd

url = 'https://www.zaubacorp.com/company-list'

# 配置Chrome选项,优化headless模式兼容性
options = Options()
options.add_argument('--headless=new')
options.add_argument('--window-size=1920,1080')  # 设置窗口尺寸,避免布局异常
options.add_argument('--disable-blink-features=AutomationControlled')  # 禁用自动化检测

driver = webdriver.Chrome(options=options)
driver.get(url)

# 显式等待目标表格加载完成(最长等待15秒)
wait = WebDriverWait(driver, 15)
table = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'table.table.table-hover.table-striped')))

# 提取表格数据,区分表头和内容行
data = []
# 提取表头
header_cells = table.find_element(By.TAG_NAME, 'thead').find_elements(By.TAG_NAME, 'th')
headers = [cell.text for cell in header_cells]
data.append(headers)

# 提取数据行
rows = table.find_element(By.TAG_NAME, 'tbody').find_elements(By.TAG_NAME, 'tr')
for row in rows:
    row_data = [cell.text for cell in row.find_elements(By.TAG_NAME, 'td')]
    data.append(row_data)

# 转为带列名的DataFrame并输出
results = pd.DataFrame(data[1:], columns=data[0])
print(results)

driver.quit()

关键修正说明

  • 精准表格定位:通过CSS选择器直接匹配目标表格的类名,确保找到正确的公司列表表格。
  • 可靠等待逻辑:使用显式等待替代隐式等待,确保表格加载完成后再执行提取操作。
  • Headless模式优化:添加窗口尺寸和自动化检测禁用参数,提升页面渲染兼容性。
  • 数据结构优化:区分表头和数据行,让输出的DataFrame带有明确列名,结果更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:35:09