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

使用Python Selenium获取Google Map Embed URL:Modal切换失败求助

解决Google Maps嵌入URL获取的模态框定位问题

我之前也踩过这个坑!Google Maps的分享弹窗不是传统的JavaScript alert,而是网页内的模态对话框,所以完全不需要用switch_to.alert来切换,直接定位模态框内的元素就行。给你一套可行的步骤和代码:

步骤1:等待模态框加载完成

点击分享按钮后,Modal需要一点时间渲染,一定要用显式等待确保元素可见,避免直接定位导致的超时错误:

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

# 假设你已经成功点击了分享按钮
wait = WebDriverWait(driver, 15)  # 给15秒足够加载时间
# 定位模态框容器(用role="dialog"识别,这是Google Maps模态框的通用属性)
share_modal = wait.until(EC.visibility_of_element_located(
    (By.CSS_SELECTOR, "div[role='dialog']")
))

步骤2:切换到「嵌入地图」标签

模态框默认显示的是分享链接,需要点击「嵌入地图」标签切换到Embed页面:

# 定位嵌入地图标签按钮(用aria-label定位更稳定,避免文本变化影响)
embed_tab = share_modal.find_element(
    By.CSS_SELECTOR, "button[aria-label='嵌入地图']"
)
embed_tab.click()

步骤3:提取Embed URL

切换标签后,找到嵌入代码的文本框,提取里面的src属性就是我们要的Embed URL:

# 等待嵌入代码文本框可见
embed_code_textarea = wait.until(EC.visibility_of_element_located(
    (By.CSS_SELECTOR, "textarea.embed-code")
))
# 获取文本框里的嵌入代码
embed_code = embed_code_textarea.get_attribute("value")
# 从代码中提取src对应的URL(比如<iframe src="xxx" ...>格式)
embed_url = embed_code.split('src="')[1].split('"')[0]
print("获取到的Embed URL:", embed_url)

额外提醒

  • Google Maps的页面元素可能会随版本更新调整,如果上面的选择器失效,你可以用浏览器开发者工具(F12)右键检查模态框元素,找唯一的标识(比如特定class、role或aria属性)来调整定位器。
  • 千万不要尝试用switch_to.alert,这个方法只适用于原生JS弹窗,对网页内的模态框完全无效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:47:24