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

Selenium无输出问题:丝芙兰商品评论爬取失败求助

问题排查与解决

核心问题分析

你的代码存在几个关键问题导致无法获取评论:

  1. By.CLASS_NAME不支持多类名:你传入的"css-k7hahd eanm77i0"是两个class名称,但By.CLASS_NAME只能接收单个class,多class选择需要用By.CSS_SELECTOR,写法为".css-k7hahd.eanm77i0"(类名前加.,类名间无空格)。
  2. 缺少元素加载等待:页面评论渲染需要时间,直接调用find_elements可能在元素未加载完成时执行,返回空列表。
  3. ChromeDriver调用方式过时:新版Selenium(4.x+)已不再支持直接将driver路径传给webdriver.Chrome(),需用Service类配置路径。
  4. 评论需滚动触发加载:丝芙兰评论默认仅显示部分内容,需滚动页面才能加载更多评论。

修复后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 配置ChromeDriver服务
service = Service("C:/Users/hp/Downloads/chromedriver_win32/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get("https://www.sephora.com/product/luminous-silk-foundation-P393401?skuId=1491380&icid2=products%20grid:p393401:product")

try:
    # 等待评论区域加载完成,超时时间10秒
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".css-k7hahd.eanm77i0"))
    )
    
    # 滚动页面加载更多评论,模拟滚动3次,每次间隔1秒
    for _ in range(3):
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
    
    # 获取所有评论元素
    reviews = driver.find_elements(By.CSS_SELECTOR, ".css-k7hahd.eanm77i0")
    
    # 遍历打印评论
    for idx, review in enumerate(reviews, 1):
        print(f"评论{idx}:\n{review.text}\n")
        
finally:
    # 关闭浏览器
    driver.quit()

额外提示

  • 若仍无法获取评论,需检查是否触发反爬机制(如需要登录、验证码),可尝试添加用户代理或手动登录后再执行爬取。
  • 滚动次数可根据需求调整,确保加载到足够数量的评论。
  • 使用WebDriverWait替代固定等待时间,能更精准地等待元素加载,提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:35