使用Python爬取Google Maps时如何提取经纬度对应地点名称
谷歌地图经纬度链接地点名提取方案
你定位到的地点名称元素不要用动态的jstcache属性做定位依据,这类属性是谷歌前端渲染时随机生成的,版本更新后值会变,稳定性极差,直接用元素固定的class属性定位即可。
Selenium 定位提取(适配Selenium+Chrome爬取逻辑)
必须等页面异步渲染完成后再查找元素,否则会触发元素不存在的报错,用显式等待做加载判断最稳妥:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 打开带经纬度的谷歌地图链接后,等待地点名元素加载,最长等待时长设为10秒 location_name_element = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.CLASS_NAME, "DkEaL")) ) # 提取标签内文本并去除首尾空白字符 location_name = location_name_element.text.strip()
执行后location_name变量存储的就是你需要的纯地点名文本,对应示例值为Labateca, Norte de Santander。
注意:如果页面加载后存在多个同class元素,可向上定位到地点信息卡片的父节点后再查找子元素,避免匹配到其他无关内容。
BeautifulSoup 解析提取
如果你是拿到页面完整源码后用BeautifulSoup解析,直接按class查找对应标签即可:
from bs4 import BeautifulSoup # 传入Selenium拿到的页面源码做解析 soup = BeautifulSoup(driver.page_source, "html.parser") location_name_tag = soup.find("span", class_="DkEaL") if location_name_tag: location_name = location_name_tag.get_text(strip=True)
常见踩坑提示
- 带经纬度的谷歌地图链接打开后,地点名称是接口异步返回渲染的,不要刚打开页面就立刻查找元素,必须等加载完成
- 不要用XPath按文本内容或者jstcache属性写定位规则,这类规则失效概率极高
内容的提问来源于stack exchange,提问作者juan escorcia
相关产品推荐
相关产品推荐

