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

使用Google自定义搜索API批量下载图片遇400错误求助

问题排查与修复

核心错误原因

你碰到的400错误是踩了Google自定义搜索API的两个硬性限制:

  • num参数最大值只能是10,你代码里设的50超出了API允许的上限(看错误请求里自动变成num=10就是库在降级处理,但还是触发了参数无效)
  • start参数最大值为100,因为API最多只能返回前100条搜索结果(10页×10条/页),你请求里的start=201完全超出范围,直接触发无效参数报错

修复后的代码

把单批请求数量改成10,同时调整批次逻辑适配API的100条结果上限(如果需要更多图片,得换搜索关键词或者改用其他图片源):

from google_images_search import GoogleImagesSearch
import os
from tqdm import tqdm
import time

# 替换为你的API密钥和搜索引擎ID
gis = GoogleImagesSearch(API_KEY, API_SECRET, validate_images=False)

def download_images_in_batches(location, output_folder):
    search_params = {
        'q': location,
        'num': 10,  # API允许的最大单批请求数量
        'fileType': 'jpg|png'
    }

    location_folder = os.path.join(output_folder, location)
    os.makedirs(location_folder, exist_ok=True)

    total_images = 100  # API能返回的最大结果数
    images_per_batch = 10
    batches = total_images // images_per_batch

    for batch in tqdm(range(batches)):
        start_index = batch * images_per_batch + 1
        search_params['start'] = start_index
        time.sleep(1)
        
        gis.search(search_params=search_params)
        
        for image in gis.results():
            image.download(location_folder)
        
        # 无需调用next_page,已通过start参数控制分页

    print(f"成功下载{total_images}张图片到文件夹:{location_folder}")

download_images_in_batches('query_to_search', 'destination_path')

额外说明

如果需要超过100张图片,Google自定义搜索API本身做不到,你可以试试:

  • 拆分搜索关键词(比如加后缀:"US Embassy Baghdad exterior"、"US Embassy Baghdad interior"等)
  • 改用其他开放图片API(比如Unsplash、Pexels的官方API)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:43:21