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

Python Selenium无法获取表格元素的.text属性问题求助

解决Selenium爬取表格Quantity列文本的问题

你的代码存在几个可能导致无法正确获取7个Quantity值的问题,这里给出修正方案和排查思路:

问题分析

  1. 等待条件不充分:原代码用presence_of_element_located仅确保单个元素存在,但表格可能未完全渲染,后续find_elements可能拿到未加载完成的元素。
  2. 定位不够精确:页面中可能存在多个表格,泛用的//table/tbody/tr/td[2]可能匹配到非目标表格的元素。
  3. 文本提取可能受渲染影响:部分动态渲染的元素,.text属性可能无法正确返回内容。

修正后的代码

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

driver = webdriver.Firefox()
driver.get('https://www.unisourceprint.com/standard-business-cards/')

# 等待目标表格中所有Quantity列元素可见,确保完全加载
quantities = WebDriverWait(driver, 15).until(
    EC.visibility_of_all_elements_located((By.XPATH, '//table[@id="pricing"]/tbody/tr/td[2]'))
)

# 提取并打印有效文本
for qty in quantities:
    qty_text = qty.text.strip()
    if qty_text:
        print(qty_text)

driver.close()

关键修正点

  • 优化等待逻辑:用visibility_of_all_elements_located直接等待所有目标元素可见,同时返回元素列表,避免二次查询的不确定性。
  • 精确定位表格:通过表格的id="pricing"锁定目标表格,排除页面其他表格的干扰。
  • 过滤无效文本:对提取的文本做strip()处理,并判断非空后再打印,避免输出空内容。

额外排查方案

如果上述代码仍无法获取正确文本,尝试以下方法:

  • 用get_attribute('innerText')或get_attribute('textContent')替代.text,适配JS渲染的元素:
    print(qty.get_attribute('innerText').strip())
    
  • 检查是否需要滚动到表格可见区域(目标页面表格默认可见,此步可选):
    driver.execute_script("arguments[0].scrollIntoView();", quantities[0])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:32:22