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

咨询:Selenium操控Google Maps左侧结果面板无法滚动的修复方案

解决Google Maps左侧结果面板滚动问题

你当前代码的问题在于,window.scrollTo(0,document.body.scrollHeight)是滚动整个页面的body元素,但Google Maps左侧的结果面板是一个独立的可滚动容器,不属于页面body的滚动范围,所以这个操作对它无效。

正确的实现方式

需要针对定位到的结果面板元素(即//div[@role="feed"])执行滚动操作,而非整个窗口。以下是修改后的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

url = "https://www.google.com/maps/@12.959744,77.6142848,12z?entry=ttu"

driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
time.sleep(15)

# 搜索餐厅
search_box = WebDriverWait(driver,15).until(EC.presence_of_element_located((By.XPATH,"//input[@id = 'searchboxinput']")))
time.sleep(5)
search_box.send_keys("restaurants")
search_box.send_keys(Keys.RETURN)
time.sleep(12)

# 定位左侧结果面板(可滚动容器)
results_panel = WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH,'//div[@role="feed"]')))
time.sleep(10)

# 方式1:单次滚动到面板底部
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight;', results_panel)
time.sleep(8)

# 方式2:循环滚动,直到加载完所有结果(更实用,因为Google Maps是动态加载)
# last_height = driver.execute_script('return arguments[0].scrollHeight', results_panel)
# while True:
#     driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight;', results_panel)
#     time.sleep(3)  # 等待新内容加载
#     new_height = driver.execute_script('return arguments[0].scrollHeight', results_panel)
#     if new_height == last_height:
#         break  # 高度不再变化,说明没有更多结果
#     last_height = new_height

关键说明

  • arguments[0]在JavaScript代码中对应传入的results_panel元素,通过修改它的scrollTop属性,直接控制这个容器的滚动位置。
  • 如果需要获取所有搜索结果,建议使用方式2的循环滚动,因为Google Maps会在滚动到底部时动态加载新内容,单次滚动只能看到当前加载的部分。

内容的提问来源于stack exchange,提问作者venkatesh L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:52:55