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
相关产品推荐
相关产品推荐

