如何解决Selenium获取表格存CSV时分号分隔无效的问题?
问题原因
你当前的代码把表格的每一行文本当成了DataFrame的单个列,所以调用to_csv时设置sep=';'根本不会生效——因为每行只有一个单元格,自然看不到分号分隔效果,你看到的空格是原表格文本里自带的内容,不是CSV的分隔符。
解决方案
需要先把每行文本拆分成对应表格的多列,再存入DataFrame,最后用分号分隔保存。具体修改如下:
import re import pandas as pd from selenium.webdriver.common.by import By # 获取表格tbody元素 elements_xpach_url = browser.find_element(By.XPATH, '/html/body/div[2]/span[2]/table/tbody[2]') # 按换行拆分每行文本,过滤空行 rows = [line.strip() for line in elements_xpach_url.text.split('\n') if line.strip()] # 拆分每行的列(假设原表格列是空格分隔,多个连续空格也处理) split_rows = [re.split(r'\s+', row) for row in rows] # 转成DataFrame(此时每行是多列数据) df = pd.DataFrame(split_rows) # 保存为分号分隔的CSV df.to_csv('csv.csv', index=False, header=False, sep=';')
补充说明
- 如果原表格的列不是用空格分隔(比如制表符),把
re.split(r'\s+', row)改成对应的分隔符拆分逻辑即可,比如row.split('\t')。 - 过滤空行是为了避免生成无效的空行数据。
内容的提问来源于stack exchange,提问作者Alex Rebell
相关产品推荐
相关产品推荐

