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

Google Play评论提取时自动滚动过慢问题求助

Google Play评论区滚动优化方案

你的问题根源在于一次性滚动过大距离(7000像素)+ 过短的滚动时长(0.3秒)——这种暴力滚动会触发Google Play的反爬机制,同时让浏览器渲染跟不上,反而比手动滚动效率更低,还容易遗漏未加载的评论。

以下是针对性的优化方案:

优化思路

  • 放弃ActionChains的模拟滚动,改用浏览器原生JS滚动,执行效率更高
  • 采用小步长多次滚动,模拟手动滚动的节奏,给页面足够的加载时间
  • 滚动后等待评论加载完成,再进行下一次滚动,避免抓取不全

优化后的代码示例

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

# 假设scroll_origin是你定位的评论区容器元素
scroll_container = scroll_origin

# 初始化滚动高度
last_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)

while True:
    # 用原生JS滚动,每次滚动容器可视高度的80%,模拟手动滚动
    driver.execute_script("arguments[0].scrollTop += arguments[0].clientHeight * 0.8;", scroll_container)
    
    # 等待新评论加载(这里用显式等待替代固定sleep,更可靠)
    try:
        # 等待页面中出现新的评论元素(请替换成你实际的评论选择器,比如'.review-container')
        WebDriverWait(driver, 2).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".review-container"))
        )
    except:
        # 超时说明没有新评论加载了
        break
    
    # 检查滚动高度是否变化,判断是否到达底部
    new_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)
    if new_height == last_height:
        break
    last_height = new_height

# 加载完成后再提取页面内容
html = driver.page_source
soup = BeautifulSoup(html)
df = extraction()

额外注意事项

  • 不要设置过短的等待时间,Google Play的评论加载需要一定缓冲,过短会导致抓取不全
  • 可以根据实际情况调整滚动步长(比如从0.8改成0.6)和等待时长,找到最适合的节奏
  • 避免短时间内频繁滚动,否则可能会被Google限制访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:42:04