使用Python+Selenium抓取网站数据导出CSV格式异常问题求助
问题原因
- 遍历逻辑错误:原代码直接提取所有
<td>元素逐个写入,没有按<tr>(表格行)分组,writerow每次只会把单个单元格内容写为一行,自然出现单列/单行的异常输出 - 未处理单元格内换行:部分
<td>内的多个分类用<br>分隔,直接读取.text会携带换行符,写入CSV时会被识别为换行,导致表格错位
修正代码
import csv from selenium.webdriver.common.by import By # 先提取所有表格行 rows = driver.find_elements(By.XPATH, "//tbody[@id='sitesList']/tr[@class='item-row']") with open('test.csv', 'w', encoding='utf-8-sig', newline='') as f: writer = csv.writer(f) # 可选:根据实际列定义写入表头 # writer.writerow(['站点信息','数值1','数值2','链接类型','分类','权益','价格','操作']) for row in rows: # 提取当前行所有td的文本 tds = row.find_elements(By.TAG_NAME, 'td') row_data = [] for td in tds: # 把单元格内的换行替换为逗号,避免CSV错位 text = td.text.replace('\n', ',') row_data.append(text) # 整行写入CSV writer.writerow(row_data)
补充说明
- 打开CSV时加
newline=''是为了避免Windows系统下出现多余空行 - 加
encoding='utf-8-sig'可以兼容Excel打开时的中文显示问题 - 如果需要提取单元格内的链接地址,可以额外用
td.find_element(By.TAG_NAME, 'a').get_attribute('href')获取对应属性写入CSV
内容的提问来源于stack exchange,提问作者greenman0914
相关产品推荐
相关产品推荐

