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

如何使用Selenium从Google图片网站爬取数据并下载图片?

使用Selenium从Google图片爬取并下载图片的实现方法

你现有的代码仅定位到了图片对应的标题链接元素,因此只能获取文本内容。要实现图片下载,需要先定位到图片标签获取资源链接,再通过网络请求将图片保存到本地,具体实现步骤如下:

前置依赖

需要先安装requests库用于发送图片下载请求:

pip install requests

具体实现逻辑

  1. 定位图片元素获取资源链接
    Google图片采用懒加载机制,未出现在可视区域的图片真实链接会存储在data-src、data-srcurl这类自定义属性中,已加载的图片链接可以直接取src属性。
  2. 模拟滚动加载更多内容
    Google图片默认只加载第一屏内容,需要模拟页面滚动触发加载逻辑,获取更多图片资源。
  3. 下载图片到本地
    拿到图片链接后发送GET请求,将响应的二进制内容写入本地文件即可完成下载。

完整示例代码

import time
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://image.google.com/search?q=汽车")  # 替换为你要搜索的关键词
time.sleep(2)

# 模拟滚动加载,这里示例滚动3次,可以根据需要调整
scroll_times = 3
for _ in range(scroll_times):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)

# 存储图片链接和对应名称
img_info = []
# 定位每张图片的卡片元素
card_list = driver.find_elements(By.XPATH, '//div[@class="isv-r PNCib MSM1fd BUooTd"]')

for card in card_list:
    try:
        # 获取图片名称,就是你之前拿到的标题
        name = card.find_element(By.XPATH, './/a[@class="VFACy kGQAp sMi44c lNHeqe WGvvNb"]').get_attribute('innerText')
        # 获取图片元素
        img = card.find_element(By.TAG_NAME, 'img')
        # 优先取懒加载的真实链接,没有的话取src
        img_url = img.get_attribute('data-src') or img.get_attribute('src')
        if img_url and 'http' in img_url:
            img_info.append({"name": name, "url": img_url})
    except Exception as e:
        continue

# 下载图片到本地
save_path = "./imgs/"  # 提前创建好这个文件夹
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
for index, info in enumerate(img_info):
    try:
        res = requests.get(info["url"], headers=headers, timeout=10)
        # 文件名处理,避免特殊字符导致保存失败
        file_name = f"{save_path}{index}_{info['name'][:10]}.jpg"
        with open(file_name, 'wb') as f:
            f.write(res.content)
        print(f"已下载:{file_name}")
    except Exception as e:
        print(f"下载失败:{info['url']}, 错误信息:{e}")

driver.quit()

注意事项

  • Google图片的元素class属性是动态更新的,如果出现定位失效的情况,重新审查页面元素替换为最新的class值即可
  • 下载请求需要携带User-Agent请求头,否则会出现403权限错误
  • 不要高频大量爬取,避免IP被谷歌临时限制
  • 保存文件时注意处理文件名的特殊字符,避免写入失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:24:01