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

如何使用pandas将爬虫获取的多属性商品数据正确写入CSV文件

电商非固定属性商品爬虫数据导出CSV实现方案

核心思路

由于不同商品的属性数量不固定,需要先为单个商品初始化专属字典,将抓取到的所有属性都存入该字典,待该商品全部参数抓取完成后,再把完整的商品字典存入总列表。最终用pandas导出时会自动对齐所有出现过的属性作为CSV列,缺失的属性值自动填充为NaN,不会出现字段错位问题。

可直接复用的实现代码

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

# 初始化全局商品存储列表,所有完整的商品字典都会存入这里
all_products = []
# 替换为你自己的商品详情页链接列表
product_urls = ["https://xxx.com/product/1", "https://xxx.com/product/2"]

# 初始化Selenium驱动(可替换为你自己的驱动配置)
driver = webdriver.Chrome()

for url in product_urls:
    # 每个商品单独初始化一个空字典,存储该商品所有属性
    current_product = {}
    # 页面加载逻辑可替换为你自己的实现
    driver.get(url)
    soup = BeautifulSoup(driver.page_source, "lxml")

    # 假设商品参数项的选择器为.param-item,参数名class为.param-key,参数值class为.param-value
    # 选择器可替换为你抓取的站点实际结构
    param_list = soup.select(".param-item")
    for param in param_list:
        key = param.select_one(".param-key").get_text(strip=True)
        value = param.select_one(".param-value").get_text(strip=True)
        # 直接将属性写入当前商品的字典,无需单独存单键字典
        current_product[key] = value

    # 可自定义添加固定通用字段
    current_product["商品名称"] = soup.select_one(".product-title").get_text(strip=True)
    current_product["详情页链接"] = url

    # 当前商品所有属性抓取完成后,再加入总列表
    all_products.append(current_product)

# 统一导出CSV,pandas自动对齐所有属性列
df = pd.DataFrame(all_products)
# 编码用utf-8-sig兼容Windows系统Excel打开不乱码
df.to_csv("电商商品数据.csv", index=False, encoding="utf-8-sig")

driver.quit()

场景适配调整方案

  • 遇到重复属性名需要避免覆盖的,写入属性前加判断:if key not in current_product: 再执行赋值操作
  • 需要固定前序列顺序的,导出前调整df列顺序即可,示例:df = df[["商品名称", "详情页链接", "重量", "长度"] + [col for col in df.columns if col not in ["商品名称", "详情页链接", "重量", "长度"]]]
  • 部分空值需要替换为自定义内容的,导出前执行df = df.fillna("无")即可把所有NaN替换为“无”

内容的提问来源于stack exchange,提问作者Коля Нарушев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:12:03