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

求助:用R/Python+Selenium爬取谷歌地图披萨店信息

使用R+Selenium爬取谷歌地图披萨店数据问题

我正在使用R编程语言,学习如何通过Selenium与网页进行交互。

目标示例: 通过谷歌地图获取特定区域内所有披萨店的名称、地址及经纬度,预期流程为:输入目标位置→点击“附近”按钮→输入搜索内容(如“pizza”)→滚动至页面底部加载全部结果→提取所需信息。


已完成操作

第一部分:搜索地址并返回经纬度

library(RSelenium)
library(wdman)
library(netstat)

selenium()
seleium_object <- selenium(retcommand = T, check = F)

remote_driver <- rsDriver(browser = "chrome", chromever = "114.0.5735.90", verbose = F, port = free_port())

remDr<- remote_driver$client
remDr$navigate("https://www.google.com/maps")

search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$sendKeysToElement(list("Statue of Liberty", key = "enter"))

Sys.sleep(5)

url <- remDr$getCurrentUrl()[[1]]

long_lat <- gsub(".*@(-?[0-9.]+),(-?[0-9.]+),.*", "\\1,\\2", url)
long_lat <- unlist(strsplit(long_lat, ","))

# 输出结果
# long_lat
# [1] "40.7269409"  "-74.0906116"

第二部分:搜索特定位置周边的披萨店

library(RSelenium)
library(wdman)
library(netstat)

selenium()
seleium_object <- selenium(retcommand = T, check = F)

remote_driver <- rsDriver(browser = "chrome", chromever = "114.0.5735.90", verbose = F, port = free_port())

remDr<- remote_driver$client

remDr$navigate("https://www.google.com/maps")

Sys.sleep(5)

search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$sendKeysToElement(list("40.7256456,-74.0909442", key = "enter"))

Sys.sleep(5)

search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$clearElement()
search_box$sendKeysToElement(list("pizza", key = "enter"))

Sys.sleep(5)

当前问题与元素定位规律

目前卡在后续步骤:

  • 不知道如何滚动页面底部加载全部披萨店结果
  • 不知道如何提取餐厅名称

通过检查HTML代码,已定位到元素规律:

  • 餐厅名称:<a class="hfpxzc" aria-label=标签
  • 餐厅地址:<div class="W4Efsd">标签

期望输出格式

希望最终得到如下结构的数据框:

name                            address longitude latitude
1 pizza land 123 fake st, city, state, zip code    45.212  -75.123

请求帮助

请指导如何完成后续的滚动加载、名称提取及经纬度匹配步骤。

补充说明: 若Python+Selenium的解决方案更成熟,也可提供Python代码,我会自行转换为R代码。


更新:地址提取进展

remDr$navigate("https://www.google.com/maps")

Sys.sleep(5)

search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$sendKeysToElement(list("40.7256456,-74.0909442", key = "enter"))

Sys.sleep(5)

search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
search_box$clearElement()
search_box$sendKeysToElement(list("pizza", key = "enter"))

Sys.sleep(5)

address_elements <- remDr$findElements(using = 'css selector', '.W4Efsd')
addresses <- lapply(address_elements, function(x) x$getElementText()[[1]])

result <- data.frame(name = unlist(names), address = unlist(addresses))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:48:09