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

Selenium爬虫抓取电商商品数据行字段错配问题排查

Selenium爬取商品列表字段错位问题修复

问题根因

字段错位完全是元素定位逻辑错误导致的:

  • 你代码里定位的//div[@class="product-collection products-grid row"]是整个商品列表的外层大容器,不是单个商品卡片
  • 循环过程中你每次都从整个列表容器全局查找全页所有的商品标题、原价、特价元素,再按下标强行和成色标签匹配。只要页面上某类元素(比如部分商品没有原价划线标签)的总数和成色标签数量不一致,就会直接出现下标错位,把A商品的价格匹配到B商品上。

修正逻辑

必须以单个商品卡片为最小提取单位:先拿到页面所有独立的商品卡片元素,再逐个在每个卡片的内部范围查找对应的成色、标题、价格字段,从根源上避免跨商品匹配元素。

修正后可运行代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import time


driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
search_url = "https://dealt.ae/collections/laptops"
driver.get(search_url)
time.sleep(3)

ALL_ITEMS = []
# 定位所有单个商品卡片,页面单个商品对应class为product-item
all_product_cards = driver.find_elements(By.CSS_SELECTOR, 'div.product-item')

for card in all_product_cards:
    # 所有字段仅在当前商品卡片范围内查找,不会串到其他商品
    # 提取成色
    grade_ele = card.find_elements(By.CSS_SELECTOR, 'div.product-top span.product-metafild')
    grade = grade_ele[0].text if grade_ele else ""
    # 提取商品标题
    title_ele = card.find_elements(By.CLASS_NAME, 'product-title')
    title = title_ele[0].text if title_ele else ""
    # 提取原价
    old_price_ele = card.find_elements(By.CLASS_NAME, 'old-price')
    old_price = old_price_ele[0].text if old_price_ele else ""
    # 提取特价
    special_price_ele = card.find_elements(By.CLASS_NAME, 'special-price')
    special_price = special_price_ele[0].text if special_price_ele else ""

    item = [grade, title, old_price, special_price]
    ALL_ITEMS.append(item)
    print(item)

# 导出时加表头和utf-8-sig编码,避免Windows打开乱码
my_df = pd.DataFrame(ALL_ITEMS, columns=["成色等级", "商品描述", "原价", "特价"])
my_df.to_csv('laptop.csv', index=False, encoding='utf-8-sig')
# 跑完关闭浏览器释放资源
driver.quit()

额外优化点

  • 增加了元素非空判断,遇到缺字段(比如无原价)的商品不会触发索引越界报错,缺失值自动留空
  • 去掉了循环内重复全局查找元素的冗余逻辑,爬取速度更快
  • 导出csv默认加了表头和适配Windows的编码,不需要后续手动调整格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:25:03