返回博客

使用Google搜索API的Google图片:实用指南

Michael Lee
Michael Lee

Expert Network Defense Engineer

10-Sep-2026

TL;DR:

  • 使用 Google 搜索 API 进行图像搜索发现,使用 tbm=isch 请求使用与网络搜索相同的经过身份验证的端点和 scraper.google.search actor。
  • 在设计导出程序之前检查图像数据。 示例保存完整响应并打印其结构,而不假设未经验证的图像结果模式。
  • 搜索可见性和图像重用是分开的。 搜索结果可以帮助定位图像;源页面和许可证决定使用图像的下一步。

图像搜索工作流从发现开始:找到查询的候选图像,检查来源,并决定哪些记录属于研究数据集。一个有用的集成保留了这条链路,而不是立即下载文件并丢失解释它们的页面。

本指南使用 Scrapeless Google Search API 中的 Google 图像 API 场景。它涵盖请求设置、完整的 Python 捕获脚本,以及在将返回的数据转换为图像目录之前所需的检查。它不假设网络结果字段映射也描述图像结果。

你可以用图像搜索数据做什么

图像搜索可以支持视觉研究、内容发现和对主题在公共来源中的出现进行审核。例如,一位建筑研究人员可以搜索建筑类型,识别相关源页面,并一起审核图像和周围描述。

API 提供供应用程序检查的搜索数据。它不会自动创建资产库、验证每个图像的来源或授予重新发布文件的权限。这些步骤属于你围绕发现构建的工作流程。

保持查询和市场上下文与响应相结合。一个国家或语言的视觉研究集可能与另一个不同。没有输入记录,后来的审核者无法判断哪个搜索产生了候选图像。

选择带有 tbm=isch 的 Google 图像

使用 POST https://api.scrapeless.com/api/v1/scraper/request,与 x-api-token 进行身份验证,并将 actor 设置为 scraper.google.search。将 tbm="isch" 放在 input 中,紧挨着查询。

参数参考 记录了这个图像搜索选择器。相同的输入模型包括 gl 用于国家,hl 用于语言,以及位置控制。如果你需要特定来源,请选择 locationuule

如果你使用完整的 url ,则其他输入参数将被忽略。这包括单独提供的图像选择器。使用一种输入模式,并在发送之前验证 URL 本身是否表达了预期的图像搜索。

捕获脚本的前提条件

准备 Python,使用 requests 安装 python3 -m pip install requests,并通过 SCRAPELESS_API_KEY 使 Scrapeless API 密钥可用。脚本还需要写入本地 JSON 文件的权限。标准库模块处理序列化、时间戳和路径。

经过身份验证的请求需要你自己的账户密钥,并且未使用实时账户执行本文中的操作。记录的请求形状已得到验证;不会在此断言完整的图像响应模式。将示例保存为 capture_google_images.py ,并在密钥配置完成后运行 python3 capture_google_images.py

Requests HTTP 客户端 发送 JSON 请求。该示例在捕获和结构检查后停止;它不会检索挂起的任务结果或下载图像文件。

在 Python 中捕获完整响应

查询 modern library architecture 提供了一个具体的视觉研究示例。将其更改为与你的项目相关的主题,同时保留保存记录中的国家、语言和结果类型设置。

python Copy
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

search_input = {"q": "modern library architecture", "gl": "us", "hl": "en", "tbm": "isch"}
response = requests.post(
    "https://api.scrapeless.com/api/v1/scraper/request",
    headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
    json={"actor": "scraper.google.search", "input": search_input},
    timeout=120,
)
response.raise_for_status()
payload = response.json()
received_at = datetime.now(timezone.utc).isoformat()
run_id = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S%fZ")
output = Path(f"google-images-{run_id}.json")
output.write_text(json.dumps({
    "input": search_input, "http_status": response.status_code,
    "received_at": received_at, "response": payload,
}, ensure_ascii=False, indent=2), encoding="utf-8")

if response.status_code == 201:
    print(f"Task pending; inspect taskId in {output}.")
elif response.status_code == 200 and isinstance(payload, dict):
    print(f"Saved {output}. Top-level response fields:")
    for key, value in payload.items():
        print(key, type(value).__name__)
        if isinstance(value, list):
            print("  items:", len(value))
            if value and isinstance(value[0], dict):
                print("  first-item keys:", sorted(value[0]))
else:
    raise ValueError(f"Unexpected response; inspect {output}.")

外部 inputhttp_statusreceived_atresponse 键形成了该应用程序的记录。它们与返回的 API 模式分开。文件名包括客户端生成的标识符,接收时间记录在本地机器上。

JSON 序列化模块 保留完整的嵌套有效负载。终端检查列出了任何顶级数组的顶级类型和首个项键。这是一个初步检查工具;嵌套在对象中的数组仍需在保存的 JSON 中进行审查。

开始使用 Scrapeless 抓取

利用 Scrapeless 提升你的网络抓取和自动化工作流程!
今天注册并获得 $5 的免费积分无需信用卡
现在在 Scrapeless Dashboard 领取您的免费信用。

在扁平化之前建立图像字段

捕获步骤故意避免对猜测的 images_results 字段进行索引。当前图像端点参考包含一个带有网络搜索模块的响应示例,因此它没有建立完整的图像特定映射。使用您帐户的成功响应来确认您的应用程序将消费的数组路径和项字段。

检查几个返回的项目,而不是认为第一个项目代表每条记录。注意哪些值是可选的,哪些是嵌套的,以及缺失值是缺席还是明确为空。在设计导出器时保持这些区别。

以下是建议的应用列,而不是已声明的 API 字段名称:

应用列 从实际数据中建立的信息
source_page_url 哪个值指向包含图像的页面
image_url 哪个值标识图像资源(如果提供)
preview_reference 一个值是否是预览 URL、内嵌数据或其他表示
result_title 哪个文本描述候选结果
observed_at 您应用程序的观察时间

保持源页面和图像资源分开。它们回答不同的问题:一个提供审查的背景,而另一个可能识别图像字节。预览不应该默默地替代完整的图像资产。

识别待处理任务和意外格式

请求工作流 将 HTTP 200 定义为数据响应,将 HTTP 201 定义为进行中的任务,带有 taskId。脚本保存两者,然后仅对完成的对象响应应用结构检查。

待处理任务不应变成一个空的图像数据集。同样,包含不熟悉模块的响应应提示检查,而不是让导出器发明空列。保留诊断记录,以便请求和负载可以一起审查。

如果您添加过滤器或更改搜索来源,请在扩展集合之前比较一小组响应。搜索类型和过滤器更改可能会影响出现的模块。因此,确切的输出行是通过观察确定的,而不是通过教程中的固定示例表。

审查图像上下文和重用权利

图像搜索有助于找到材料,但它并不建立该材料的许可。在复制、再分发或修改图像之前,请跟踪候选的源页面并检查出版商的使用条件。

谷歌的 图像许可元数据 可以在支持的图像搜索体验中曝光许可和获取信息。仅在搜索中的存在并不能证明这些权限存在。其 图像使用权指南 解释了为什么应在源头检查许可详情。

对于研究目录,保持一个单独的审查状态,例如未审查或许可确认,并保留团队所需的源和审查证据。这些是应用程序的决策,而不是 API 的保证。避免仅仅因为请求成功而标记图像为可重用。

将发现扩展到可审查的目录

在确认响应映射之后,创建一个小的导出并与保存的负载进行比较。确认每个源页面是否属于与图像参考和标题相同的候选项。然后决定什么算作您的用例中的重复项。

两个结果可以通过不同的页面指向同一图像,或指向相似图像的不同版本。URL 去重和视觉相似性是不同的操作。从一个有文档的规则开始,并在引入转换之前保留原始引用。

如果您的应用程序后来获取源页面或图像文件,请将其作为单独的阶段,并有其结果。这样的分离允许候选项保持在研究记录中,即使后续的检索或权限审查尚未完成。

结论

使用 tbm=isch 请求图像搜索,保留响应,并在创建导出器之前确认其字段。一个有用的图像研究工作流将源上下文和权限审查与发现并行保留,因此每个选定资产都能追溯到其来源。

准备构建您的搜索数据工作流吗?

与我们社区中构建搜索工作流的开发者联系:Discord · Telegram
使用 Google Search API 文档 配置您的第一个请求。计划工作负载时检查 Scrapeless 定价,并使用 Python 搜索教程 获取相关背景。 本指南的 API 示例使用当前请求接口。

常见问题

问:在此示例中,Google 图像是一个独立的参与者吗?

不是。此文档请求使用 scraper.google.searchtbm=isch 作为输入。

问:代码会下载图像文件吗?

不会。它捕获搜索数据并检查其结构。下载图像将是一个单独的应用步骤。

问:网络搜索有机结果映射能否不变地重复使用?

不要这样假设。首先检查实际图像搜索数据,并确认相关数组路径和项目字段。

问:为什么没有固定的图像 JSON 示例?

当前参考示例没有建立一个完整的针对图像的具体模式。此指南提供了一种捕获工作流程,但没有以真实输出的形式呈现虚构的响应。

问:返回的图像是否有可重复使用的许可证?

搜索外观并不建立重用权。使用图像之前,请查看源页面及适用的许可证或权限。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录