如何合并d1与d2的所有行数据并保存至DataFrame?
合并Selenium获取的表格行数据并保存为DataFrame
要实现将d1和d2的所有行数据合并并保存为DataFrame,你需要先收集每行数据(而非仅打印),再将数据合并后转换为DataFrame。以下是修改后的完整代码及说明:
完整代码
from selenium import webdriver from selenium.webdriver.common.by import By import time import pandas as pd # 初始化浏览器驱动(根据你的浏览器类型调整,比如ChromeDriver) driver = webdriver.Chrome() # 补充打开目标页面的代码:driver.get("你的目标URL") lst1 = [1,2,3,5,8,9,10,11] lst2 = [4,5,6,8,9,17,19,29,37] # 初始化空列表存储数据 data1 = [] data2 = [] # 收集TabPanel1的行数据 for i in lst1: d1 = driver.find_element(By.XPATH, f'//*[@id="ContentPlaceHolder1_ctl01_TabPanel1"]/table/tbody/tr[{i}]') # 将每行文本按空格分割为字段(若表格列用制表符分隔,可改用split("\t")) row_data = d1.text.split() data1.append(row_data) time.sleep(1) # 切换到TabPanel2 driver.find_element(By.XPATH, '//*[@id="__tab_ContentPlaceHolder1_ctl01_TabPanel2"]/span').click() time.sleep(2) # 收集TabPanel2的行数据 for j in lst2: d2 = driver.find_element(By.XPATH, f'//*[@id="ContentPlaceHolder1_ctl01_TabPanel2"]/table/tbody/tr[{j}]') row_data = d2.text.split() data2.append(row_data) time.sleep(1) # 合并两个数据集 combined_data = data1 + data2 # 转换为DataFrame # 如果需要指定列名,可添加columns参数,比如columns=["列1", "列2", "列3"] df = pd.DataFrame(combined_data) # 可选:保存为CSV文件 # df.to_csv("合并数据.csv", index=False, encoding="utf-8-sig") # 关闭浏览器 driver.quit()
关键说明
- 数据收集:原代码仅打印行文本,这里改为将每行文本分割为字段列表并添加到数据列表中,确保数据可被pandas处理。
- 分割方式:
split()默认按任意空白字符分割(空格、制表符等),如果表格列是用特定分隔符(比如竖线|),请替换为split("|")并按需清理多余空格。 - 列名处理:如果表格有表头,可先单独获取表头行的文本作为列名,比如:
header = driver.find_element(By.XPATH, '//*[@id="ContentPlaceHolder1_ctl01_TabPanel1"]/table/thead/tr').text.split() df = pd.DataFrame(combined_data, columns=header) - 数据验证:转换为DataFrame后,可通过
print(df.head())查看前几行数据,确认格式是否正确。
内容的提问来源于stack exchange,提问作者ناصر نثار
相关产品推荐
相关产品推荐

