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

如何使用Python Selenium获取不同元素的属性值并保存到文本文件

Python Selenium提取表格配对数据问题解答

问题原因

  • XPath语法错误:你写的//*tbody属于错误写法,*是节点通配符,不能直接拼接在tbody前,该写法会匹配标签名为*tbody的不存在节点,导致name和ID两个列表为空,自然没有输出结果。
  • 缺少加载等待:如果页面是动态渲染的,代码执行查找逻辑时表格DOM还未加载完成,也会返回空列表拿不到数据。
  • 配对逻辑不安全:分开查找姓名和ID两个列表,一旦出现某行缺少对应节点的情况,会出现两个列表长度不一致,要么索引报错要么配对错位。
  • 冗余代码:with open语法会自动管理文件句柄,执行完缩进块后会自动关闭文件,末尾的file.close()属于多余代码,虽然不影响运行但建议删除。
  • 补充:如果使用Selenium4及以上版本,find_elements_by_xpath方法已被官方废弃,执行会抛出警告甚至报错。

修正后代码

Selenium3兼容版本

# 先获取所有tr行节点
tr_list = driver.find_elements_by_xpath("//tbody/tr")

with open('output.txt','a', encoding='utf-8') as file:
    for tr in tr_list:
        # 单tr内部查找对应元素,避免配对错误
        name = tr.find_element_by_xpath("./td[1]").text.strip()
        data_id = tr.find_element_by_xpath("./td[2]/input").get_attribute('data-id')
        file.write(f"{name};{data_id}\n")

Selenium4推荐写法(目前主流版本建议使用)

先导入依赖:

from selenium.webdriver.common.by import By
# 可选:需要加显式等待可以导入下面两个模块
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

核心逻辑:

# 可选:加显式等待,最多等10秒直到表格tr加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//tbody/tr"))
)

tr_list = driver.find_elements(By.XPATH, "//tbody/tr")

with open('output.txt','a', encoding='utf-8') as file:
    for tr in tr_list:
        name = tr.find_element(By.XPATH, "./td[1]").text.strip()
        data_id = tr.find_element(By.XPATH, "./td[2]/input").get_attribute('data-id')
        file.write(f"{name};{data_id}\n")

补充说明

  • 代码新增encoding='utf-8'参数,避免写入非英文内容时出现乱码
  • 用strip()去除姓名前后的空白字符,避免多余的换行、空格污染输出内容
  • 按行遍历的逻辑彻底避免了两个列表配对错位的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:51:03