谷歌图片爬虫API:将图片垂直以JSON格式读取
Advanced Data Extraction Specialist
关键要点:
- 一个POST,无需浏览器。 Google Images的数据来自对
scraper.google.search演员的单个POST请求,参数为tbm: "isch"。Scraper API负责在服务器端呈现页面并解析数据;您返回读取JSON。 - 图像垂直是一个输入字段。
tbm: "isch"将Google搜索演员切换到图像垂直;q携带您的查询。其他一切都是可选的。 - 所有地方使用一个身份验证头。 每个调用都携带
x-api-token: <您的密钥>。一个账户密钥覆盖该演员和其他所有scraper.*演员。 - 解析后的JSON,顶级扁平化。 演员直接返回
metadata、search_information和suggested_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
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
{
"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
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
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_information 和 suggested_searches。
在免费计划中获取您的 API 密钥:app.scrapeless.com
您得到的返回结果
对于图像垂直,演员返回 Scrapeless metadata 信封、Google 回显的 search_information 以及 Google 在网格上方呈现的图像细化芯片(suggested_searches)的行。每个芯片都有自己的内联缩略图。这是 q: "golden retriever"、tbm: "isch" 的真实捕获:
json
// 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_results和time_taken_displayed可能返回0和空值,因为 Google 没有呈现用于网页搜索的“关于 N 个结果”行。- 将每个芯片字段视为可为空。
uds在每个芯片中存在,但在本次捕获中为空,并且芯片数量因查询而异——阅读实际存在的内容,而不是假设固定长度。
结论
读取 Google 图片归结为一个决定和一个请求:将 scraper.google.search 演员指向 Images 垂直,用 tbm: "isch",发送 { actor, input } 以及您的 x-api-token,并读取解析字段的响应。响应在顶层进行扁平化——metadata、search_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,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



