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

Selenium Python爬取Catastro网站:图片src获取失败求助

解决Catastro网站图片src获取失败的问题

可能的原因及对应解决方案:


1. 元素尚未完全加载,需等待可见而非仅存在

你当前只等待了map元素的存在,但点击后图片可能还在异步加载,直接查找会触发元素未找到的报错。把查找图片的代码改成等待元素可见:

# 等待图片元素可见,超时时间可根据实际加载速度调整
img_element = WebDriverWait(driver, 15).until(
    EC.visibility_of_element_located((By.XPATH, '//*[@id="ImgFachada0"]'))
)
img_src = img_element.get_attribute("src")
print(img_src)

2. 图片元素可能嵌套在iframe中

不少政府类网站会用iframe加载独立模块内容,先检查页面是否存在iframe,若有需先切换到对应iframe再查找元素:

# 查找并切换到包含图片的iframe(需替换成实际iframe的定位逻辑,比如id或特征src)
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//iframe[contains(@src, "fachada")]'))
)
driver.switch_to.frame(iframe)

# 再查找图片元素
img_element = WebDriverWait(driver, 15).until(
    EC.visibility_of_element_located((By.XPATH, '//*[@id="ImgFachada0"]'))
)
img_src = img_element.get_attribute("src")
print(img_src)

# 操作完成后切回主文档
driver.switch_to.default_content()

3. 尝试用JS直接获取动态赋值的src

如果图片的src是通过JavaScript动态绑定的,Selenium的get_attribute可能无法直接拿到,改用执行JS脚本获取:

img_src = driver.execute_script('return document.getElementById("ImgFachada0").src;')
print(img_src)

4. 确认元素定位是否准确

手动在浏览器控制台执行document.getElementById("ImgFachada0"),看是否能返回目标元素。如果返回null,说明你的xpath定位有误——可能元素id是动态生成的,需要更换定位方式,比如通过class或父元素层级定位:

# 示例:通过class定位(需替换成图片元素实际的class值)
img_element = WebDriverWait(driver, 15).until(
    EC.visibility_of_element_located((By.CLASS_NAME, "fachada-img-class"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:30:53