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

Selenium提取谷歌地图地址元素失败,遇NoSuchElementException求解决

问题描述

我正在用Beautiful Soup结合Selenium爬取谷歌地图,目标是完成搜索后进入首个结果页面,提取地址和对应的URL。目前已经能成功搜索并进入首个结果页面,但无法提取地址元素(示例地址:2620 Someplace Dr, anywhere, NY 12567)。

我尝试过Xpath和Class定位,示例代码如下:

address_element = driver.find_element(By.XPATH,'//*[@id="QA0Szd"]/div/div/div[1]/div[2]/div/div[1]/div/div/div[9]/div[3]/button/div/div[2]/div[1]')

补充信息:地址对应的网页元素(已移除具体地址):

<div class="Io6YTe fontBodyMedium kR99db ">some address</div>

出现的错误:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="QA0Szd"]/div/div/div[1]/div[2]/div/div[1]/div/div/div[9]/div[3]/button/div/div[2]/div[1]"}
(Session info: chrome=116.0.5845.96)
Stacktrace:

解决思路与代码示例

1. 用显式等待规避元素加载延迟

谷歌地图是动态渲染页面,直接查找元素容易因加载未完成报错,优先用Selenium的显式等待:

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

# 最长等待10秒,直到地址元素出现
address_element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "Io6YTe"))
)
address = address_element.text

2. 使用更稳定的定位器

你之前用的XPath层级太深,页面结构稍有变动就会失效。根据提供的元素,用以下更可靠的定位方式:

# 方法1:多class组合定位(class间用点连接,替换空格)
address_element = driver.find_element(By.CSS_SELECTOR, "div.Io6YTe.fontBodyMedium.kR99db")

# 方法2:核心class定位(Io6YTe是地址元素的专属标识)
address_element = driver.find_element(By.CLASS_NAME, "Io6YTe")

3. 结合Beautiful Soup解析

如果Selenium定位仍有问题,可先获取页面源码再用Beautiful Soup解析:

from bs4 import BeautifulSoup

# 获取当前页面源码
page_source = driver.page_source
soup = BeautifulSoup(page_source, "html.parser")

# 提取地址文本
address = soup.find("div", class_="Io6YTe").text

4. 提取结果页面URL

当前页面的URL就是该地点的谷歌地图链接,直接获取即可:

place_url = driver.current_url

5. 额外注意事项

  • 谷歌地图有反爬机制,爬取时避免高频操作,优先用显式等待而非time.sleep()
  • 若页面包含iframe,需先切换到对应iframe再查找元素:driver.switch_to.frame("iframe_id")
  • 如果class名称动态变化,可尝试用XPath的文本特征定位,比如//div[contains(text(), "Dr,")](根据地址实际特征调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:37:54