Python脚本实现FxBlue网页表格数据导出至CSV的问题求助
解决FxBlue表格数据规整到Excel的问题
你当前的核心问题是直接抓取了表格的纯文本内容,导致所有数据挤在同一列。要解决这个问题,需要结构化遍历表格的行与单元格,提取对应数据后再用pandas生成规范表格导出到Excel。
修改步骤
- 提取表头:定位表格表头区域,获取每列标题作为后续表格的列名
- 提取行数据:遍历表格的每一行,逐个提取单元格文本,组成每行的数据集
- 生成表格并导出:用pandas将表头和行数据组合成结构化表格,直接导出到Excel
修改后的完整代码
from selenium.webdriver import Chrome from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from time import sleep import pandas as pd # 配置信息 Username = '' Password = '' # 目标网站链接 FxBlueLink = 'https://www.fxblue.com/live/' # 安装并启动Chrome驱动 ChromeDriver = ChromeDriverManager().install() Browser = Chrome(service=Service(ChromeDriver)) Browser.maximize_window() # 登录流程 Browser.get(FxBlueLink) Browser.find_element(By.XPATH, "/html/body/div[1]/div[5]/div/div[2]/div/div[2]/div[1]/div[3]/form/table/tbody/tr[1]/td/input").send_keys(Username) Browser.find_element(By.XPATH, "/html/body/div[1]/div[5]/div/div[2]/div/div[2]/div[1]/div[3]/form/table/tbody/tr[2]/td/input").send_keys(Password) sleep(2) Browser.find_element(By.XPATH, "/html/body/div[1]/div[5]/div/div[2]/div/div[2]/div[1]/div[3]/form/table/tbody/tr[3]/td/input").click() # 进入目标页面 sleep(2) Browser.get("https://www.fxblue.com/users/rdrtrader") sleep(2) Browser.find_element(By.XPATH, "/html/body/div[1]/div[5]/div/div[2]/div/div[1]/div/div[1]/div[1]/ul/li[2]").click() # 选择Magic Number sleep(2) Browser.find_element(By.ID, "ext-gen24").click() sleep(2) Browser.find_element(By.ID, "ext-gen71").click() sleep(2) # 结构化抓取表格数据 table_data = [] # 提取表头 header_cells = Browser.find_elements(By.CLASS_NAME, "x-grid3-hd-inner") headers = [cell.text.strip() for cell in header_cells if cell.text.strip()] # 提取所有行数据 rows = Browser.find_elements(By.CLASS_NAME, "x-grid3-row") for row in rows: cells = row.find_elements(By.CLASS_NAME, "x-grid3-cell-inner") row_data = [cell.text.strip() for cell in cells if cell.text.strip()] if row_data: # 跳过空行 table_data.append(row_data) # 生成DataFrame并导出到Excel df = pd.DataFrame(table_data, columns=headers) df.to_excel("fxblue_ea_results.xlsx", index=False) print("数据已成功导出到fxblue_ea_results.xlsx") # 清理操作 Browser.quit() input()
关键说明
- 不再直接抓取整个表格的纯文本,而是通过FxBlue表格的ExtJS类名(
x-grid3-hd-inner、x-grid3-row、x-grid3-cell-inner)精准定位表头、行和单元格 - 通过列表推导式提取并过滤空内容,避免无效数据混入
- 利用pandas的
DataFrame自动完成数据结构化,导出的Excel会自动对应列与行,解决了数据挤在同一列的问题
内容的提问来源于stack exchange,提问作者RHale
相关产品推荐
相关产品推荐

