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

Python Selenium爬取速卖通商品:合并拆分价格并生成字典

解决Selenium爬速卖通商品时的价格合并与元素转字符串问题

核心思路

先定位每个商品的父容器,再在单个容器内提取所有字段,彻底避免不同商品的价格元素错位。WebElement转普通字符串直接调用.text属性即可。

具体实现步骤

  1. 定位所有商品容器
    先找到页面中所有商品的外层节点(速卖通商品卡片通常是带特定类名的div标签,需根据实际页面调整选择器),确保后续提取的字段都属于同一个商品:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.get("你的速卖通乐高商品页URL")
    
    # 定位所有商品容器,示例选择器需根据实际页面修改
    product_items = driver.find_elements(By.CSS_SELECTOR, "div.product-item")
    
  2. 遍历容器提取字段并合并价格
    对每个商品容器,分别提取各字段,拼接拆分的价格部分:

    product_list = []
    
    for item in product_items[:60]:  # 仅处理前60个商品
        # 提取商品名称
        name = item.find_element(By.CSS_SELECTOR, "a.product-title").text.strip()
        
        # 提取价格各部分并合并(选择器需匹配页面实际元素)
        try:
            price_symbol = item.find_element(By.CSS_SELECTOR, "span.money-symbol").text
            price_integer = item.find_element(By.CSS_SELECTOR, "span.money-integer").text
            price_dot = item.find_element(By.CSS_SELECTOR, "span.money-dot").text
            price_decimal = item.find_element(By.CSS_SELECTOR, "span.money-decimal").text
            full_price = f"{price_symbol}{price_integer}{price_dot}{price_decimal}"
        except:
            full_price = "价格获取失败"  # 处理元素缺失的异常
        
        # 提取运费
        try:
            shipping = item.find_element(By.CSS_SELECTOR, "div.shipping-info").text.strip()
        except:
            shipping = "运费信息缺失"
        
        # 提取销量
        try:
            sales = item.find_element(By.CSS_SELECTOR, "div.sold-count").text.strip()
        except:
            sales = "销量信息缺失"
        
        # 生成商品字典并加入列表
        product_dict = {
            "商品名称": name,
            "价格": full_price,
            "运费": shipping,
            "销量": sales
        }
        product_list.append(product_dict)
    
  3. 写入文本文件
    将收集到的商品信息写入文件(用JSON格式更易读):

    import json
    
    with open("速卖通乐高商品信息.txt", "w", encoding="utf-8") as f:
        json.dump(product_list, f, ensure_ascii=False, indent=2)
    

关键注意点

  • WebElement转字符串:直接调用元素的.text属性,就能获取元素显示的文本内容,返回结果就是普通字符串。
  • 避免元素错位:绝对不要单独提取所有价格符号、所有整数部分再循环拼接——这种方式极易因页面元素加载顺序或缺失导致字段对应错误,必须基于单个商品容器提取子元素。
  • 异常处理:加入try-except能避免某个商品字段缺失导致整个爬取中断,保证尽可能多地获取有效数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:19