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

如何用Selenium在Google Play Store弹窗中滚动加载全部评论?

解决Google Play评论滚动加载问题

你的问题核心在于两点:滚动容器定位错误(用find_elements返回列表,无法直接用于JS滚动操作),且仅执行一次滚动,无法触发后续评论的懒加载机制。以下是针对性的修正方案:

关键修正说明

  • 改用find_element(单数)获取正确的单个滚动容器,避免依赖易变的绝对XPath(Google Play弹窗元素路径可能随页面更新变化)
  • 循环执行滚动+等待逻辑,直到评论数量不再增长,确保加载完所有隐藏评论
  • 用WebDriverWait替代固定time.sleep,提升代码稳定性

完整代码示例

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

# 点击"查看全部评论"按钮
more_button = driver.find_element(By.XPATH, "//span[contains(text(),'See all reviews')]")
more_button.click()

# 等待评论弹窗加载完成,定位滚动容器(可根据实际页面调整定位方式)
wait = WebDriverWait(driver, 10)
scroll_container = wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='fysCi']")))

# 循环滚动加载所有评论
last_review_count = 0
while True:
    # 滚动到容器底部
    driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', scroll_container)
    # 等待新评论加载
    time.sleep(3)
    # 获取当前已加载的评论数量
    current_reviews = driver.find_elements(By.XPATH, "//div[@class='RHo1pe']")
    current_count = len(current_reviews)
    # 若评论数量不再增加,说明已加载完毕
    if current_count == last_review_count:
        break
    last_review_count = current_count

# 输出结果
print(f"共获取到{len(current_reviews)}条评论")

额外提示

  • 若XPath定位失效,可尝试用CSS选择器,比如滚动容器的CSS选择器为.fysCi
  • 遇到反爬限制时,可适当延长等待时间,或模拟分段滚动(每次滚动容器高度的80%)模仿人类操作
  • Google Play页面结构可能更新,若定位失效需重新检查元素的class或其他属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:43:19