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

如何通过Selenium获取Gibiru图片搜索结果中img标签的src属性值

解决Gibiru图片搜索爬虫无法定位img元素的问题

问题核心

你遇到的NoSuchElementException主要来自三个原因:

  • 页面动态渲染延迟:Gibiru的图片搜索结果是异步加载的,代码未等待元素完全渲染就直接查找
  • 绝对定位器脆弱:使用的全路径XPATH依赖固定页面结构,一旦页面布局微调就会失效
  • 缺少必要的等待环节:点击图片标签后,结果区域需要时间加载,直接查找会失败

修正方案

1. 改用显式等待

使用Selenium的WebDriverWait等待元素满足可交互/可见条件,替代直接调用find_element,避免加载延迟问题。

2. 使用稳定定位器

目标img标签有唯一的类组合gs-image gs-image-scalable,可以直接用CSS选择器定位,比绝对XPATH更可靠。

完整修正代码

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

# 初始化浏览器和等待器
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)  # 设置10秒超时时间

# 访问Gibiru主页
driver.get("https://gibiru.com/")

# 定位搜索框并执行搜索
search_box = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.form-control.has-feedback.has-clear')))
search_box.send_keys("lfc")
search_box.send_keys(Keys.RETURN)

# 等待图片标签可点击并切换到图片结果
image_tab = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[contains(text(), 'Images')]")))
image_tab.click()

# 等待第一张图片加载完成并获取src属性
first_img = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img.gs-image.gs-image-scalable")))
print(first_img.get_attribute("src"))

# 关闭浏览器
driver.quit()

扩展说明

如果需要批量获取所有图片的src,把visibility_of_element_located换成visibility_of_all_elements_located,用find_elements遍历结果:

all_imgs = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "img.gs-image.gs-image-scalable")))
for img in all_imgs:
    print(img.get_attribute("src"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:45:55