Selenium Python提取表格10行元素并导出CSV方案咨询
实现方案
步骤说明
- 导入Python内置的
csv模块,用于处理CSV文件导出 - 循环遍历第1到第10行数据,通过动态构造XPath定位每行的Ticket#和Email
- 使用
WebDriverWait等待元素加载,提升代码稳定性 - 收集数据后,按要求格式打印并写入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
相关产品推荐
相关产品推荐

