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

如何用Selenium Python获取谷歌地图商家营业时间

谷歌地图商家营业时间获取方案(Selenium Python)

核心解决思路

谷歌地图采用动态渲染机制,直接定位元素极易失败,必须结合显式等待确保元素加载完成后再操作,同时需针对营业时间按钮的特征选择稳定的定位方式。

步骤与示例代码

假设你已有基础代码可获取商家名称和地址,在此基础上添加以下逻辑:

  1. 导入等待相关模块
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
  1. 等待并点击营业时间按钮
# 初始化等待器,最长等待10秒
wait = WebDriverWait(driver, 10)

# 方式1:通过aria-label属性定位(稳定性更高)
hours_button = wait.until(EC.element_to_be_clickable(
    (By.XPATH, '//button[contains(@aria-label, "营业时间")]')
))

# 滚动到按钮位置,避免被页面导航栏遮挡导致点击失败
driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", hours_button)

# 执行点击
hours_button.click()
  1. 提取完整营业时间数据
    点击后营业时间会展开为表格结构,定位并提取数据:
# 等待营业时间容器加载完成
hours_container = wait.until(EC.presence_of_element_located(
    (By.CLASS_NAME, "OqCZI")  # 该类名可能随谷歌地图更新变化,需用F12查看当前元素
))

# 遍历每行营业时间
for row in hours_container.find_elements(By.TAG_NAME, "tr"):
    day = row.find_element(By.CLASS_NAME, "mxowUb").text  # 星期几的元素类名
    time = row.find_element(By.CLASS_NAME, "y0skZc").text  # 对应时间的元素类名
    print(f"{day}: {time}")

关键注意事项

  • 元素定位实时验证:谷歌地图的元素属性(类名、aria-label)可能随时更新,务必用浏览器F12开发者工具查看当前页面的DOM结构,调整定位表达式。
  • 多语言适配:如果是英文界面,将定位文本改为"Hours"即可。
  • 前置操作:必须先处理谷歌地图的Cookie授权弹窗,否则元素定位会失败。

内容的提问来源于stack exchange,提问作者Nayem Jaman Tusher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:12:10