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

为何原可用的Python谷歌图片下载代码突然失效?

解决google_images_download批量下载谷歌图片失效的问题

我之前也踩过这个坑!google_images_download这个模块已经三年多没更新了,谷歌的图片搜索接口早就调整了DOM结构和请求逻辑,旧模块的爬虫代码根本抓不到有效的图片下载链接,这就是你只生成空文件夹、所有图片都下载失败的核心原因。

推荐解决方案:改用维护中的google_images_search模块

这个模块是目前活跃维护的,适配谷歌最新的图片搜索接口,亲测有效。

步骤1:替换模块

先卸载失效的旧模块,再安装新模块:

pip uninstall -y google_images_download
pip install google_images_search

步骤2:适配你需求的替代代码

下面的代码完全对应你原来的需求:搜索指定关键词、下载4张中等尺寸的全景图(全景图找不到会自动 fallback 到中等尺寸普通图),同时打印图片URL,包含异常处理逻辑:

from google_images_search import GoogleImagesSearch

# 初始化搜索对象(基础下载无需API密钥,高级功能可后续配置)
gis = GoogleImagesSearch()

search_queries = ['Apple', 'Orange', 'Grapes', 'water melon']

def downloadimages(query):
    # 匹配原需求的搜索参数
    search_params = {
        'q': query,
        'num': 4,
        'fileType': 'jpg',
        'imgSize': 'MEDIUM',
        'imgType': 'PANORAMIC'  # 全景图参数
    }
    
    try:
        # 执行搜索并下载
        gis.search(search_params)
        for image in gis.results():
            print(f"Downloading: {image.url}")
            image.download(f"./downloads/{query}")  # 保存路径和旧模块逻辑一致
    except Exception as e:
        print(f"全景图搜索失败,尝试普通中等尺寸图:{str(e)}")
        # 降级到普通中等尺寸图
        search_params.pop('imgType')
        try:
            gis.search(search_params)
            for image in gis.results():
                print(f"Downloading fallback: {image.url}")
                image.download(f"./downloads/{query}")
        except Exception as fallback_e:
            print(f"最终下载失败:{str(fallback_e)}")

# 执行批量下载
for query in search_queries:
    downloadimages(query)
    print()

为什么旧模块会失效?

google_images_download的最后一次更新是在2020年,谷歌之后多次修改了图片搜索的前端渲染逻辑和接口参数,旧模块依赖的DOM选择器已经完全失效,无法解析到真实的图片下载地址,所以会出现“0张图片下载成功”的日志。

额外提示

如果需要更高级的功能(比如过滤版权、指定颜色等),可以参考google_images_search的官方说明配置API密钥,但基础的图片下载不需要密钥也能正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:14:07