🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

谷歌图片爬虫API:将图片垂直以JSON格式读取

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

10-Jun-2026

关键要点:

  • 一个POST,无需浏览器。 Google Images的数据来自对scraper.google.search演员的单个POST请求,参数为tbm: "isch"。Scraper API负责在服务器端呈现页面并解析数据;您返回读取JSON。
  • 图像垂直是一个输入字段。 tbm: "isch"将Google搜索演员切换到图像垂直;q携带您的查询。其他一切都是可选的。
  • 所有地方使用一个身份验证头。 每个调用都携带x-api-token: <您的密钥>。一个账户密钥覆盖该演员和其他所有scraper.*演员。
  • 解析后的JSON,顶级扁平化。 演员直接返回metadatasearch_informationsuggested_searches — 没有result包装进行解包。suggested_searches中的每个细化芯片都携带一个内联的data:image/jpeg;base64缩略图。
  • 完整的图像网格位于metadata.rawUrl 解析后的对象显示细化芯片和搜索元数据;metadata.rawUrl指向存储的、完全呈现的Google Images页面,当您需要每个未扁平化的图像URL时。
  • 免费开始。 新的Scrapeless账户包含免费的Scraper API积分 — 通过app.scrapeless.com注册。

介绍:将图像垂直读取为JSON

Google Images位于开放网络上最大的视觉索引之一之上,很多工作依赖于它所呈现的内容:视觉产品研究、品牌和徽标监测、构建图像数据集以供模型训练、跟踪查询在不同地区的呈现效果,以及大规模提取设计参考。查询是输入;一组图像和一行细化芯片是输出。

以编程方式获取该输出是困难的部分。图像页面是JavaScript渲染的,缩略图作为base64内嵌在脚本负载中,细化芯片和图像URL埋藏在页面的水合数据中,而匿名请求得到的是挑战而不是网格。一个手工编写的爬虫必须呈现页面、绕过反机器人层,并反向工程标记 — 三项工作,都可能在Google推出重新设计时发生变化。

本指南将介绍Scrapeless Scraper API中的scraper.google.search演员,使用tbm: "isch"运行。单个HTTP请求返回解析后的对象以及存储的渲染图像页面副本。无需浏览器驱动,无需维护解析器。下面的示例是实际的q: "golden retriever"捕获;一篇伴随的Scraper API指南涵盖同一请求形状的AI回答家族。


为什么选择Scraper API用于Google Images

  • 无需浏览器,无需维护解析器。 演员在服务器上渲染并解析图像页面;您获得结构化字段,而不是DOM进行遍历或手动解码base64数据。
  • 一个输入切换显示垂直。 相同的Google搜索演员提供网页结果和图像 — 设置tbm: "isch",响应即为图像垂直。
  • 内置居住区出口和渲染。 地理路由和JavaScript渲染在演员内部运行;您发送{ actor, input }并读取结果。
  • 一种格式读取。 解析的图像对象在顶级扁平化,因此一次编写的客户端包装处理响应,而无需解包嵌套信封。

app.scrapeless.com的免费计划中获取您的API密钥。Google搜索演员是Deep SerpApi的一部分,属于定价目录。


前提条件

  • 一个Scrapeless账户和API密钥 — 通过app.scrapeless.com注册。
  • 用于快速测试的curl,或使用Python 3.10+进行下面的客户端。
  • 对HTTP和JSON的基本熟悉。

将您的密钥存储在环境中,以便它不会出现在代码中:

bash Copy
export SCRAPELESS_API_KEY=your_api_token_here

请求

Google Images使用site/SERP端点。您命名演员,提供输入,并在头部发送您的密钥。

  • 端点: POST https://api.scrapeless.com/api/v1/scraper/request
  • 演员: scraper.google.search
  • 身份验证头: x-api-token: $SCRAPELESS_API_KEY

请求体为{ "actor": "<name>", "input": { … } }。对于图像垂直,输入有两个字段:

json Copy
{
  "actor": "scraper.google.search",
  "input": { "q": "golden retriever", "tbm": "isch" }
}
输入字段 必需 描述
q 图像搜索查询字符串
tbm 搜索垂直 — "isch" 选择 Google 图像
hl 界面语言,例如 "en"
gl 国家/地区, 例如 "us"
google_domain 要访问的 Google 域名,例如 ".google.com"

示例 — curl 和 Python

最快的检查是一个单独的 curl 调用:

bash Copy
curl -sS -X POST https://api.scrapeless.com/api/v1/scraper/request \
  -H "Content-Type: application/json" \
  -H "x-api-token: ${SCRAPELESS_API_KEY}" \
  -d '{
    "actor": "scraper.google.search",
    "input": { "q": "golden retriever", "tbm": "isch" }
  }'

在 Python 中的相同请求,响应直接解析为字典:

python Copy
import os
import json
import requests

ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"


def scrape_google_images(query: str) -> dict:
    resp = requests.post(
        ENDPOINT,
        headers={
            "Content-Type": "application/json",
            "x-api-token": os.environ["SCRAPELESS_API_KEY"],
        },
        json={"actor": "scraper.google.search", "input": {"q": query, "tbm": "isch"}},
        timeout=120,
    )
    resp.raise_for_status()
    return resp.json()


if __name__ == "__main__":
    data = scrape_google_images("golden retriever")
    # google.search 在顶层展平解析结果,
    # 因此 data.get("result", data) 会回落到整个响应。
    print(json.dumps(data.get("result", data), indent=2, ensure_ascii=False))

因为 Google 搜索演员在顶层展平其解析输出,所以没有 result 键可以访问 — data.get("result", data) 仅返回整个响应,您可以直接从中读取 search_informationsuggested_searches

在免费计划中获取您的 API 密钥:app.scrapeless.com


您得到的返回结果

对于图像垂直,演员返回 Scrapeless metadata 信封、Google 回显的 search_information 以及 Google 在网格上方呈现的图像细化芯片(suggested_searches)的行。每个芯片都有自己的内联缩略图。这是 q: "golden retriever"tbm: "isch" 的真实捕获:

json Copy
// q:"golden retriever" 和 tbm:"isch" 的真实捕获。
// base64 缩略图已修剪;suggested_searches 缩减为 2 个中的 5 个芯片 — 说明性示例。
{
  "metadata": {
    "engine": "google.search",
    "rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.google.search/…_1781025000.html"
  },
  "pagination": {},
  "search_information": {
    "organic_results_state": "确切拼写的结果",
    "query_displayed": "golden retriever",
    "total_results": 0,
    "time_taken_displayed": ""
  },
  "suggested_searches": [
    {
      "name": "小狗",
      "link": "https://www.google.com/search?sca_esv=…&gl=us&q=golden+retriever+puppy&uds=…&udm=2&sa=X&…",
      "uds": "",
      "q": "小狗金色猎犬",
      "thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
    },
    {
      "name": "可爱",
      "link": "https://www.google.com/search?sca_esv=…&gl=us&q=cute+golden+retriever&uds=…&udm=2&sa=X&…",
      "uds": "",
      "q": "可爱金色猎犬",
      "thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…"
    }
  ]
}

字段逐项说明:

字段 类型 内容
metadata.engine 字符串 提供请求的演员引擎 — "google.search"
metadata.rawUrl 字符串 (URL) 完全渲染的 Google 图像页面的存储副本;获取它以获得完整的图像网格
pagination 对象 分页游标;此捕获的空对象
search_information.query_displayed 字符串 Google 回显的查询("golden retriever"
search_information.organic_results_state 字符串 拼写/结果状态("确切拼写的结果"
search_information.total_results 数字 Google 报告的结果计数 — 此处图像垂直为 0
search_information.time_taken_displayed 字符串 Google 的时间字符串;此捕获为空
suggested_searches[] 数组 在网格上方呈现的图像细化芯片
suggested_searches[].name 字符串 芯片标签("小狗""可爱""拉布拉多",…)
suggested_searches[].q 字符串 芯片运行的细化查询("小狗金色猎犬"
suggested_searches[].link 字符串 (URL) 针对该细化的 Google 图像搜索 URL(udm=2 是 Google 的图像垂直参数)
suggested_searches[].uds 字符串 Google 的 uds 芯片令牌;此捕获为空
suggested_searches[].thumbnail 字符串 芯片的内联 data:image/jpeg;base64 预览

对形状的一些诚实观察:

  • 解析对象呈现的是精炼芯片,而不是平坦的 images_results 数组。 对于 isch 垂直方向,演员返回 suggested_searches 以及在 metadata.rawUrl 的呈现页面。当您需要网格上的每个图像 URL 时,请获取 metadata.rawUrl —— 存储的页面保留了解析对象未展开的完整集合。
  • 缩略图是内联的 base64。 每个芯片的 thumbnail 是完整的 data:image/jpeg;base64 值,可以在没有第二次请求的情况下使用;该装置进行了修剪以增强可读性。
  • search_information 反映 Google 的展示。 在图像垂直方向上,total_resultstime_taken_displayed 可能返回 0 和空值,因为 Google 没有呈现用于网页搜索的“关于 N 个结果”行。
  • 将每个芯片字段视为可为空。 uds 在每个芯片中存在,但在本次捕获中为空,并且芯片数量因查询而异——阅读实际存在的内容,而不是假设固定长度。

结论

读取 Google 图片归结为一个决定和一个请求:将 scraper.google.search 演员指向 Images 垂直,用 tbm: "isch",发送 { actor, input } 以及您的 x-api-token,并读取解析字段的响应。响应在顶层进行扁平化——metadatasearch_information 和带有内联缩略图的 suggested_searches 精炼芯片——并且 metadata.rawUrl 保存完整呈现的页面以获取完整网格。编写客户端包装程序一次,指向您需要的查询,相同的形状可以涵盖 AI 答案演员 当管道扩展时。

准备好构建您的 AI 驱动图像数据管道了吗?

加入我们的社区以申请免费计划,并与构建 Google 图像管道的开发者连接:Discord · Telegram

app.scrapeless.com 注册以获得免费的 Scraper API 额度,并将 scraper.google.search 演员指向您的图像管道所需的查询、语言和地区。


常见问题

问:抓取 Google 图片合法吗?

该演员收集公开可见的数据。规则因管辖权和 Google 的服务条款而异,因此请查看相关的服务条款,并在大规模运行之前咨询法律顾问。切勿收集受 GDPR 或 CCPA 保护的个人数据,尊重与单个图像相关的权利。

问:我该如何进行身份验证?

每个请求都会携带头部 x-api-token: <your key>。一个账户密钥可以在 scraper.google.search 及其他所有演员中使用。在 app.scrapeless.com 的免费计划上创建一个密钥。

问:我该如何从网页结果切换到图像?

input 中设置 tbm: "isch"。默认情况下,相同的 scraper.google.search 演员提供网页 SERP;tbm: "isch" 选择图像垂直,并将解析形状更改为图像精炼芯片及呈现的图像页面。

问:实际的图像 URL 在哪里?

解析对象呈现了精炼芯片(suggested_searches)和搜索元数据。图像 URL 的完整网格位于存储在 metadata.rawUrl 的页面中——当您需要结果页面上的每个图像时,而不仅仅是精炼行时,请获取该 URL。

问:我可以通过语言或国家来缩小结果吗?

可以。可选的 hl(UI 语言)、gl(国家/地区),和 google_domain 输入范围请求——例如,{ "q": "golden retriever", "tbm": "isch", "hl": "en", "gl": "us" }

问:我需要代理吗?

不需要。住宅出站和地理路由已内置于演员中——您发送输入,演员处理网络和渲染层。

问:我可以在没有 SDK 或 AI 代理的情况下运行此程序吗?

可以。这是普通的 HTTP——curl、Python requests、Node fetch,或任何具有 HTTP 客户端的语言都可以直接反对 POST /api/v1/scraper/request。不需要 SDK。

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

最受欢迎的文章

目录