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

