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

使用Selenium爬取g-charge站点地址时遭遇TimeoutException如何解决?

修复Selenium TimeoutException问题的方案

问题根源

你遇到的超时错误主要来自两个核心问题:

  • 依赖层级极深的CSS选择器,Google Maps的渲染结构本身不稳定,DOM层级稍有变动就会导致定位失败
  • 默认状态下,地图上的信息窗口(.gm-style-iw)是隐藏的,只有点击标记才会显示,直接等待它可见必然超时

具体修复步骤

1. 改用稳定的定位规则

抛弃冗长的层级路径,使用更简洁、不易失效的选择器,比如直接定位信息窗口内的标题:.gm-style-iw h5,但要先确保信息窗口被触发显示。

2. 先等待地图及标记加载完成

地图标记是动态渲染的,必须先完成基础加载:

  • 先等待#map_canvas容器存在,确认地图框架加载完成
  • 再等待地图上的标记元素(Google Maps标记通常带有.gm-marker类)加载完毕

3. 调整等待条件

如果不需要元素完全可见,仅需确认存在DOM中,用EC.presence_of_all_elements_located替代visibility_of_all_elements_located,降低等待门槛。

4. (推荐)直接抓取API接口数据

这类地图网站通常会通过XHR接口返回点位数据,比模拟页面操作高效且稳定。打开浏览器开发者工具(F12)的Network面板,刷新页面后筛选XHR请求,找到返回充电桩数据的接口,直接用requests请求即可,无需依赖Selenium。

修改后的代码示例

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

# Selenium 4.6+ 无需手动指定chromedriver路径,自动适配版本
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options)

try:
    driver.get("https://www.g-charge.com.tr/Map.Aspx")
    
    # 等待地图容器加载完成
    WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, 'map_canvas')))
    
    # 等待地图标记加载(标记类可通过开发者工具确认)
    markers = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.gm-marker')))
    
    # 点击第一个标记触发信息窗口显示(如需批量获取,可循环处理所有标记)
    if markers:
        markers[0].click()
        
        # 等待信息窗口内的标题元素加载
        title_elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.gm-style-iw h5')))
        print([elem.text for elem in title_elements])
finally:
    driver.quit()

额外提示

  • 确保Selenium版本在4.6及以上,避免手动配置chromedriver带来的版本兼容问题
  • 若循环点击多个标记,需处理元素失效(stale element)问题,可添加重试逻辑

内容的提问来源于stack exchange,提问作者Efe Değirmenci

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:55:59