You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium爬取数据用Pandas写入CSV如何按指定列格式化输出

问题原因

你当前将所有提取到的属性值都追加到了一维列表中,Pandas将一维列表转换为DataFrame时默认会生成为单列结构,所以会出现所有数据在同一列/强行展平后全在一行的问题。

解决方案

只需要调整数据存储的结构为二维列表,每个option对应的三个属性作为单独的子列表(对应CSV的一行)存入总列表即可,不需要调用已弃用的append方法,修改后代码如下:

from selenium import webdriver
import pandas as pd

# 存储二维数据,每个元素对应CSV的一行
price = []

driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.example.co.jp/dp/zzzzzzzzzz/")

select_box = driver.find_element_by_name("dropdown_selected_size_name")
options = [x for x in select_box.find_elements_by_tag_name("option")]
for element in options:
    # 每次追加一行的三个字段,组成子列表
    price.append([
        element.get_attribute("value"),
        element.get_attribute("class"),
        element.get_attribute("data-a-html-content")
    ])

# 构造DataFrame时指定列名,按你的需求设置col2-col4
output = pd.DataFrame(price, columns=['col2', 'col3', 'col4'])
# 插入行号作为col1列
output.insert(loc=0, column='col1', value=range(len(output)))

# 导出时关闭默认索引输出,避免多出生成的索引列
output.to_csv("Data.csv", encoding='utf-8-sig', index=False)

driver.close()

导出的CSV就会完全符合你要求的四列结构,每行对应一个option的信息。


内容的提问来源于stack exchange,提问作者crawf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:54:00