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

Python Selenium滚动加载Google评论失败问题求助

问题:Google旅行评论页Selenium滚动不加载更多内容
  • Google旅行JW Marriott Washington DC的评论页初始显示10条评论,滚动到底部应加载更多内容
  • 目标爬取近100条评论,但以下两种Selenium滚动代码均无效:
    • driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    • driver.execute_script("window.scrollTo(0, document.body.scrollHeight+100000);")
  • 已在Chrome和Firefox浏览器测试
解决方案

1. 定位评论专属滚动容器

Google旅行的评论内容放在独立滚动容器内,而非整个页面body,需针对容器滚动:

from selenium.webdriver.common.by import By

# 定位评论滚动容器(选择器需根据页面实时调整,可通过开发者工具获取)
review_container = driver.find_element(By.CSS_SELECTOR, 'div[jsname="fk8dgd"]')

# 滚动容器到底部
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", review_container)

2. 逐步滚动+等待加载

直接跳到底部可能无法触发加载逻辑,模拟逐步滚动并等待新评论加载:

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

target_review_count = 100
review_container = driver.find_element(By.CSS_SELECTOR, 'div[jsname="fk8dgd"]')

while True:
    current_count = len(driver.find_elements(By.CSS_SELECTOR, 'div[jscontroller="H6eOGe"]'))
    if current_count >= target_review_count:
        break
    
    # 滚动容器到底部
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", review_container)
    
    # 等待新评论加载,或用显式等待验证新元素出现
    time.sleep(2)
    try:
        WebDriverWait(driver, 5).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, f'div[jscontroller="H6eOGe"]:nth-child({current_count + 1})'))
        )
    except:
        # 无新评论加载则退出循环
        break

3. 处理"查看更多"按钮

部分场景下页面会显示"查看更多"按钮,需点击触发加载:

from selenium.webdriver.common.by import By
import time

target_review_count = 100
review_container = driver.find_element(By.CSS_SELECTOR, 'div[jsname="fk8dgd"]')

while True:
    current_count = len(driver.find_elements(By.CSS_SELECTOR, 'div[jscontroller="H6eOGe"]'))
    if current_count >= target_review_count:
        break
    
    try:
        # 查找并点击"查看更多"按钮
        load_more_btn = driver.find_element(By.CSS_SELECTOR, 'button[jsname="higCR"]')
        load_more_btn.click()
        time.sleep(2)
    except:
        # 点击失败则尝试滚动容器
        driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", review_container)
        time.sleep(2)
        # 仍无新评论则退出
        if len(driver.find_elements(By.CSS_SELECTOR, 'div[jscontroller="H6eOGe"]')) == current_count:
            break

注意事项

  • 页面元素选择器可能随Google页面更新变化,需通过浏览器开发者工具重新定位
  • 避免操作过于频繁,防止触发反爬机制
  • 确保使用最新版本的Selenium和对应浏览器驱动

内容的提问来源于stack exchange,提问作者Srishti Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:57:11