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

Selenium提取HTML表格缺失最后一个值问题排查求助

问题根源分析
  • 无头模式默认窗口尺寸限制:Chrome无头模式默认视口尺寸极小,目标网页表格的最后一列(Measure列)在小窗口下会被判定为超出可视区域,被页面CSS规则隐藏或挤压,Selenium自带的.text属性仅返回可见元素的文本内容,因此最后一列的0值会被过滤。
  • 元素等待范围不全:仅等待了<tr>行元素加载完成,但最后一列的数值是页面加载完基础结构后异步计算渲染的,行元素存在时最后一个<td>的内容还未完成渲染,此时读取就会缺失对应数值。
  • 行文本读取逻辑局限性:目标网页的最后一列数值放在带特殊样式属性的内嵌标签中,部分样式会让Selenium的.text属性判定内容不可见,自动跳过读取。
修复方案

按照以下步骤修改代码即可抓取到完整的表格行内容:

  1. 给Chrome启动参数添加窗口尺寸配置,保证所有表格列都在可视范围内
  2. 不要直接读取整行的.text属性,改为遍历行下所有<td>元素,用textContent属性读取内容,该属性不受元素可见性限制,能拿到所有内嵌文本
  3. 可以额外增加对最后一个<td>元素的等待,确保内容渲染完成后再读取

修改后的核心代码参考:

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

t1 = []
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu') 
# 新增窗口尺寸配置
options.add_argument('--window-size=1920,1080')
driver = webdriver.Chrome(executable_path = 'mypath/chromedriver.exe', options = options) 
driver.get("https://ai.fmcsa.dot.gov/SMS")
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@title='Close']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "(//input[@name='MCSearch'])[2]"))).send_keys('1605061')
wait.until(EC.element_to_be_clickable((By.XPATH, "(//input[@name='search'])[2]"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//*[@id='BASICs']/p[2]/a"))).click()
# 等待目标行加载
tbl = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//tr[@class='valueRow sumData']")))
# 遍历所有td读取textContent,避免可见性过滤
td_elements = tbl.find_elements(By.TAG_NAME, 'td')
row_values = [td.get_attribute('textContent').strip() for td in td_elements]
print(row_values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:45:02