谷歌图片采集教程:Python批量抓取图片URL和来源页面(附代码)

做素材采集、电商选品、竞品图片监控的朋友,应该都遇到过这种需求:按关键词把谷歌图片结果批量抓下来——拿到图片 URL、来源页面、所属网站。这篇教大家用谷歌图片搜索 API 自动化完成,返回的是结构化 JSON,不需要解析网页,代码可直接复制。

图片采集要拿什么数据

谷歌图片结果页,每条结果包含:

  • 图片 URL:原图地址(image_url
  • 缩略图 URL:小图地址(thumbnail_url
  • 标题:图片的标题或 alt 文本
  • 来源页面:图片所在网页的链接(link
  • 来源域名:所属网站(domain

拿到这五样,素材库、选品表格、竞品图库都能建起来。

接口与准备

我用的接口是 SerpBase(官网 serpbase.dev)的 /google/images 端点,POST JSON + X-API-Key 认证。注册送 100 次免费搜索,不需要绑卡,够把流程跑通。

一个注意点:图片端点每次扣 2 credits(比网页搜索贵一倍),批量前先小样本验证再放大。

第一步:抓一个关键词的图片

核心接口:POST https://api.serpbase.dev/google/images

import requests

API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/images"

resp = requests.post(
    URL,
    headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
    json={"q": "iphone 15 pro blue", "hl": "en", "gl": "us", "page": 1},
    timeout=30,
)

data = resp.json()
for img in data.get("images", [])[:10]:
    print(img.get("rank"), "|", img.get("title"))
    print("  图片:", img.get("image_url"))
    print("  来源页:", img.get("link"))
    print("  域名:", img.get("domain"))
    print()

返回的 images 数组里,每条结果带 image_urlthumbnail_urltitlelinkdomainrank。一次请求,图片列表就齐了。

第二步:批量下载图片(只存元数据更省心)

图片 URL 直接请求下载会慢、会占带宽。更稳妥的做法是先只存元数据(URL、来源、标题),需要时再按需下载:

import requests
import csv

API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/images"

def fetch_images(keyword, hl="en", gl="us"):
    resp = requests.post(
        URL,
        headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
        json={"q": keyword, "hl": hl, "gl": gl},
        timeout=30,
    )
    return resp.json().get("images", [])

# 多关键词批量
keywords = ["iphone 15 pro blue", "macbook air", "apple watch"]
rows = []
for kw in keywords:
    for img in fetch_images(kw):
        rows.append([
            kw,
            img.get("title", ""),
            img.get("image_url", ""),
            img.get("link", ""),
            img.get("domain", ""),
        ])
    print(f"{kw}: {len(rows)} 条(累计)")

with open("images.csv", "w", newline="", encoding="utf-8-sig") as f:
    writer = csv.writer(f)
    writer.writerow(["关键词", "标题", "图片URL", "来源页", "域名"])
    writer.writerows(rows)

print(f"已导出 {len(rows)} 条图片元数据")

utf-8-sig 保证 Excel 打开不乱码。

第三步:按需下载原图

如果确实要下载原图,建议加节流和失败处理(图片端点失败同样自动退 credits):

import time
import requests

def download_image(url, save_path, timeout=30):
    try:
        resp = requests.get(url, timeout=timeout)
        if resp.status_code == 200:
            with open(save_path, "wb") as f:
                f.write(resp.content)
            return True
    except Exception:
        pass
    return False

# 示例:下载前 5 张
for i, img in enumerate(images[:5]):
    ok = download_image(img["image_url"], f"img_{i}.jpg")
    print(f"img_{i}.jpg: {'成功' if ok else '失败'}")
    time.sleep(0.5)   # 控制节奏

注意:下载图片本身不消耗 API credits(只有搜索请求扣),但注意图片版权,商用需谨慎。

费用与建议

  • /google/images 每次 2 credits
  • 注册送 100 次免费搜索 = 约 50 次图片搜索,够测一个完整流程
  • 标准包 $10 买 2 万次($0.50/千次),永不过期;图片按 2 credits 算,约合 $1/千次
  • 批量前先小样本验证字段是否齐全,再放大规模

常见问题

Q:thumbnail_urlimage_url 有时是空的?
A:这两个字段是可选的,有的结果只给一个,代码里用 .get() 兜底就行。

Q:能采集图片所在网站的信息吗?
A:图片返回里有 link(来源页)和 domain(域名),要更深的网页信息可以配合 /google/search 再查。

Q:图片能直接商用吗?
A:版权取决于图片本身,采集到的是 URL 和元数据,是否可用请自行确认授权。

结语

图片采集的核心价值在「元数据先行」——先拿到 URL、来源、域名列表,按需再下载,成本和风险都可控。用 API 拿结构化 JSON,比解析图片搜索页快一个数量级。

完整参数见 SerpBase 官方文档。先跑通第一步,看看你能抓到什么图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值