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

Selenium Python提取表格10行元素并导出CSV方案咨询

实现方案

步骤说明

  1. 导入Python内置的csv模块,用于处理CSV文件导出
  2. 循环遍历第1到第10行数据,通过动态构造XPath定位每行的Ticket#和Email
  3. 使用WebDriverWait等待元素加载,提升代码稳定性
  4. 收集数据后,按要求格式打印并写入CSV文件

修改后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support import expected_conditions as EC
import csv  # 导入csv模块处理文件导出


# 初始化Firefox驱动
driver = webdriver.Firefox(service=Service(r'C:\geckodriver-v0.32.0-win-aarch64\geckodriver.exe'))
wait = WebDriverWait(driver, 10)

# 打开票务网站
driver.get('WebsiteURl')

# 切换到iframe
iframe = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="gsft_main"]')))
driver.switch_to.frame(iframe)

# 存储提取到的票务数据
ticket_records = []

# 遍历第1至第10行
for row_idx in range(1, 11):
    # 动态构造当前行的XPath
    ticket_xpath = f"//table/tbody/tr[{row_idx}]/td[3]"
    email_xpath = f"//table/tbody/tr[{row_idx}]/td[8]"
    
    # 等待元素加载并获取文本
    ticket_num = wait.until(EC.presence_of_element_located((By.XPATH, ticket_xpath))).text
    email = wait.until(EC.presence_of_element_located((By.XPATH, email_xpath))).text
    
    # 添加到数据列表
    ticket_records.append((ticket_num, email))
    
    # 按要求格式打印
    print(f"{ticket_num} {email}")

# 导出为空格分隔的CSV文件
with open('ticket_data.csv', 'w', newline='', encoding='utf-8') as file:
    csv_writer = csv.writer(file, delimiter=' ')
    csv_writer.writerows(ticket_records)

# 关闭浏览器
driver.quit()

关键细节说明

  • 使用wait.until(EC.presence_of_element_located(...))替代直接find_element,避免因页面加载慢导致的元素定位失败
  • 动态构造XPath时使用f-string,简化循环中的路径生成
  • CSV文件使用空格作为分隔符,完全匹配你需要的输出格式,方便PowerShell脚本读取
  • 最后调用driver.quit()关闭浏览器进程,避免资源占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:10:57