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

使用Selenium提取Daraz商品评论失败问题排查

Daraz商品评论爬取问题解决方案

以下是你代码未返回元素的常见原因及对应解决办法:

  • 评论区嵌入在iframe中
    部分电商平台会将评论内容放在独立iframe里,直接用当前driver上下文无法定位到iframe内的元素。需要先切换到对应iframe:

    # 先找到包含评论的iframe(可通过元素检查器确认iframe的id或其他属性)
    comment_iframe = driver.find_element(By.ID, "your-iframe-id")
    driver.switch_to.frame(comment_iframe)
    # 之后再执行元素查找
    data = driver.find_elements(By.CLASS_NAME, "item")
    # 操作完成后切回主文档
    driver.switch_to.default_content()
    
  • 固定等待时间不足,元素未加载完成
    time.sleep(5)是固定等待,无法适配网络波动。改用显式等待,确保元素加载完成后再抓取:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.get(site)
    # 等待评论区元素出现,最长等待10秒
    data = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, "item"))
    )
    
  • 元素定位范围太广,存在同名class冲突
    页面中可能有多个class为item的元素,建议先定位到评论区父容器mod-reviews,再在其内部查找子元素:

    driver.get(site)
    # 先定位评论区容器
    reviews_container = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "mod-reviews"))
    )
    # 在容器内查找评论项
    data = reviews_container.find_elements(By.CLASS_NAME, "item")
    
  • 评论需滚动或点击加载
    Daraz的评论区可能需要滚动到可视区域才会加载,或者需要点击“查看更多”按钮。可以先滚动到评论区:

    reviews_container = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "mod-reviews"))
    )
    # 滚动到评论区
    driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth'});", reviews_container)
    # 等待滚动后加载的评论
    data = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.CLASS_NAME, "item"))
    )
    
  • 触发反爬机制
    Daraz可能检测到Selenium的自动化特征,需要伪装浏览器:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions()
    # 启用无头模式(可选)
    options.add_argument("--headless=new")
    # 禁用自动化标识
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    # 初始化driver
    driver = webdriver.Chrome(options=options)
    # 移除navigator.webdriver标识
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    
    driver.get(site)
    # 后续执行元素查找逻辑
    

内容的提问来源于stack exchange,提问作者Muhammad Shamil Umar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:10:34