如何使用Python Selenium自动提取网页表格内容并保存至CSV/Excel
实现方法
前置修正
你现有代码存在多处语法拼写错误,先统一修正:
- 所有
web driver拼接为webdriver,Chrome Driver Manager拼接为ChromeDriverManager find_element_by_x path修正为find_element(By.XPATH, xxx),Selenium 4.0+已弃用旧的find_element_by_*系列API,需要额外导入By类- 不需要点击原代码里的下载按钮,直接提取表格内容即可
核心实现逻辑
- 提交查询后定位表格的首行元素
- 提取首行所有单元格的文本内容
- 调用Python内置
csv模块将内容写入CSV文件
完整可运行代码
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time import csv # 初始化浏览器 options = webdriver.ChromeOptions() # 可选配置:如果不需要显示浏览器可以加无头模式 # options.add_argument("--headless=new") web = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) web.get('http://ts.vcccms.in/CCMSPDI/FindLogs/Index') time.sleep(4) # 输入设备ID提交查询 device_id = "slcs010928" div_id = web.find_element(By.XPATH, "/html/body/div[2]/div[1]/form/div/div[1]/div[1]/div/input") div_id.send_keys(device_id) time.sleep(4) submit = web.find_element(By.XPATH, "/html/body/div[2]/div[1]/form/div/div[1]/div[2]/div/button") submit.click() time.sleep(4) # 定位表格第一行,注意这里的XPATH需要和你页面实际表格结构匹配,如果你页面表格的XPATH不同可以自行修改 # 示例是假设表格tbody下第一个tr就是数据首行 first_row = web.find_element(By.XPATH, "/html/body/div[2]/div[1]/form/div/div[2]/div/section/div/div/div/div/div/table/tbody/tr[1]") # 提取所有单元格内容 row_data = [td.text.strip() for td in first_row.find_elements(By.TAG_NAME, "td")] # 写入CSV文件 with open("table_first_row.csv", "w", encoding="utf-8-sig", newline="") as f: writer = csv.writer(f) # 如果需要先写表头可以先写表头行,不需要的话直接写数据行 # writer.writerow(["列1名称", "列2名称", "列3名称"]) writer.writerow(row_data) web.close()
注意事项
- 如果表格加载不稳定,可将固定
time.sleep替换为Selenium的显式等待,避免元素未加载就报错 - 代码中表格首行的XPATH需要根据你实际页面的DOM结构调整,如果表格有id属性,优先用id定位,稳定性远高于全路径XPATH
内容的提问来源于stack exchange,提问作者user16244517
相关产品推荐
相关产品推荐

