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

使用Selenium-Python从谷歌地图提取数据:元素定位失败

谷歌地图搜索结果名称爬取方案修正

你的问题出在谷歌地图的DOM结构和类名是动态生成的,旧的section-result这类class已经不再使用,而且jstcache属性是谷歌内部动态生成的,每次加载都会变化,完全不可靠。另外你的代码还有一些过时写法,下面是修正后的完整方案:

修正后的代码

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

options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
options.add_argument('--disable-extensions')

driver_path = '/downloads/selenium/chromedriver.exe'

# 替换过时的chrome_options参数为options
driver = webdriver.Chrome(driver_path, options=options)

driver.get('https://www.google.com/maps')

# 显式等待同意cookie按钮出现,代替固定sleep
wait = WebDriverWait(driver, 10)
cookie_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[.//span[text()='Aceptar todo']]")))
cookie_btn.click()

# 定位搜索框并执行搜索
search_box = wait.until(EC.visibility_of_element_located((By.NAME, 'q')))
search_box.send_keys('clinics cork')
search_box.send_keys(Keys.RETURN)

# 等待搜索结果加载完成
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[role='list'] div[role='listitem']")))

# 获取所有搜索结果条目,当前谷歌地图的结果条目用role="listitem"标识
results = driver.find_elements(By.CSS_SELECTOR, "div[role='list'] div[role='listitem']")

for result in results:
    # 定位结果中的标题元素,当前用fontHeadlineSmall类标识标题
    title_elem = result.find_element(By.CSS_SELECTOR, "div.fontHeadlineSmall")
    print(title_elem.text)

driver.quit()

关键改动说明

  • 替换过时参数:新版本Selenium中,初始化Chrome时应使用options参数,而非chrome_options。
  • 用显式等待替代time.sleep:固定等待时间无法适配不同网络和页面加载速度,显式等待会在元素满足条件后再执行操作,稳定性更高。
  • 更新元素定位选择器:
    • 搜索结果条目用div[role='list'] div[role='listitem']定位,这是语义化属性,比动态类名更可靠。
    • 结果标题使用div.fontHeadlineSmall,这是谷歌地图当前使用的标题样式类,比旧的section-result-title更准确。

注意:谷歌地图的DOM结构可能会随时更新,如果后续再次失效,建议打开浏览器开发者工具(F12),手动查看当前元素结构并更新选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:05:14