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

如何使用RSelenium实现谷歌地图搜索结果列表滚动?

使用RSelenium滚动谷歌地图搜索结果列表的解决方案

你可以通过以下两种可靠方法实现滚动谷歌地图的地点列表,核心是定位到正确的结果容器元素:

方法1:定位结果容器后发送滚动按键

谷歌地图的搜索结果列表通常被包裹在role="feed"的div元素中,这是一个稳定的定位标识。代码示例:

library(RSelenium)

rD <- rsDriver(browser = "chrome")
remDr<- rD[["client"]]
remDr$open()

url<- "https://www.google.com/maps?q=bar+in+madrid&um=1&ie=UTF-8&sa=X&ved=2ahUKEwiCmLXvyrL7AhWgV6QEHezpCg0Q_AUoAXoECAIQAw"
remDr$navigate(url)

# 等待结果列表加载完成(建议添加,避免元素未渲染)
Sys.sleep(3)

# 定位搜索结果列表容器
results_container <- remDr$findElement(using = "css selector", value = "div[role='feed']")

# 发送END键滚动至列表底部
results_container$sendKeysToElement(list(key = "end"))

方法2:用JavaScript直接滚动(更稳定)

如果按键滚动不生效,可直接通过JavaScript操作元素的滚动属性,支持循环滚动加载更多结果:

library(RSelenium)

rD <- rsDriver(browser = "chrome")
remDr<- rD[["client"]]
remDr$open()

url<- "https://www.google.com/maps?q=bar+in+madrid&um=1&ie=UTF-8&sa=X&ved=2ahUKEwiCmLXvyrL7AhWgV6QEHezpCg0Q_AUoAXoECAIQAw"
remDr$navigate(url)

Sys.sleep(3)

results_container <- remDr$findElement(using = "css selector", value = "div[role='feed']")

# 单次滚动到底部
remDr$executeScript("arguments[0].scrollTop = arguments[0].scrollHeight;", list(results_container))

# 循环滚动加载更多(示例滚动5次,可按需调整次数)
for (i in 1:5) {
  remDr$executeScript("arguments[0].scrollTop = arguments[0].scrollHeight;", list(results_container))
  Sys.sleep(2) # 等待新内容加载
}

注意事项

  • 建议使用Sys.sleep()或显式等待(如waitForElement)确保元素完全渲染后再操作,避免"元素未找到"的错误。
  • div[role='feed']是谷歌地图搜索结果列表的通用容器选择器,若后续页面结构更新,可通过浏览器开发者工具重新定位元素的CSS选择器或XPath。

内容的提问来源于stack exchange,提问作者cholo.trem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:55:16