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

使用Python抓取商品页面评论:仅获取前4条,求全量评论抓取修正方案

修正商品全部评论的爬虫代码

嘿,我瞅了你的代码,发现几个关键问题导致只能抓到前4条评论,咱们来一步步解决:

原代码的核心问题

  • 同时混用了requests(静态页面请求)和selenium(动态页面渲染),你用html.fromstring解析的是requests拿到的静态页面,而网站的评论是动态加载的,静态页面里只有初始的几条评论
  • 按钮定位的XPath有语法错误,"是HTML转义字符,直接写在Python代码里会导致定位失败
  • 没有处理评论的持续加载逻辑——电商网站的评论大多需要多次点击“加载更多”或者滚动页面才能全部显示,只点一次按钮肯定拿不全

修正后的完整代码

咱们统一用Selenium来处理动态渲染的内容,确保能抓到所有评论:

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

# 初始化Chrome驱动(确保你的电脑上安装了对应版本的chromedriver)
driver = webdriver.Chrome()

try:
    target_url = 'https://mamaearth.in/product/glow-serum-foundation-almond-glow'
    driver.get(target_url)
    driver.maximize_window()

    # 循环点击"加载更多评论"按钮,直到没有更多评论可加载
    while True:
        try:
            # 显式等待加载按钮出现,用文本定位比样式更稳定
            load_more_button = WebDriverWait(driver, 10).until(
                EC.element_to_be_clickable((By.XPATH, '//div[contains(text(), "Load More Reviews")]'))
            )
            # 滚动到按钮位置,避免被页面元素遮挡
            driver.execute_script("arguments[0].scrollIntoView(true);", load_more_button)
            time.sleep(1)  # 给页面留一点加载缓冲时间
            load_more_button.click()
        except:
            # 捕获异常说明没有更多按钮了,退出循环
            print("所有评论已加载完成!")
            break

    # 等待最后一批评论加载完毕
    time.sleep(3)

    # 提取评论内容和评论者名称
    comment_elements = driver.find_elements(By.CLASS_NAME, 'ReviewItem_content')
    reviewer_elements = driver.find_elements(By.CLASS_NAME, 'ReviewItem_header_name')

    # 输出或保存数据
    for reviewer, comment in zip(reviewer_elements, comment_elements):
        print(f"评论者: {reviewer.text.strip()}")
        print(f"评论内容: {comment.text.strip()}\n")

finally:
    # 不管成功失败,最后都关闭浏览器
    driver.quit()

关键改进点

  • 全程用Selenium处理动态页面,彻底避免静态请求和动态渲染的冲突
  • 用循环点击加载按钮的逻辑,确保所有隐藏的评论都被加载出来
  • 改用WebDriverWait显式等待,元素定位更稳定,不容易出现找不到元素的超时问题
  • 用按钮的文本内容定位,比依赖易变的样式属性更可靠
  • 添加滚动到按钮的操作,防止按钮被页面导航栏或其他元素遮挡导致点击失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:22:41