如何抓取Google AI模式:答案、引用和来源
Expert in Web Scraping Technologies
TL;DR:
- 谷歌AI模式是一个完整页面的对话回答引擎,而不是内联的AI概述框。 它将一个提示扩展为多个并行子搜索,并返回一个长的综合多部分答案,带有自己的引用来源——这是谷歌最接近于ChatGPT或Perplexity的类比。
scraper.aimode演员以一次同步POST捕获它。 对/api/v2/scraper/execute的单次调用返回答案;没有触发-轮询-下载的流程需要管理。- 一次调用返回三种答案格式以及引用。
task_result包含result_text(普通文本)、result_md(markdown)、result_html(呈现的答案)、一个引用来源的数组,说明答案所引用的来源,以及一个用于出处的raw_url。 citations是引用分享的表面。 每个条目命名来源——标题、URL、网站名称、摘要——以便你可以去重和排名谷歌AI模式引用的领域,满足研究意图的查询。- 出口由
country固定;答案语言不保证。 同一提示在特定运行时可能返回非英语答案,因此要在后续处理中检测语言,而不是假设国家决定答案语言。 - 信封与其他演员线匹配。 每次调用返回
{ status, task_id, task_result },因此在这里编写的客户端也能读取ChatGPT、Gemini和Perplexity。 - 免费开始。 新的Scrapeless账户包括免费试用积分——请在app.scrapeless.com注册。
介绍:AI模式是谷歌的回答引擎,而不是SERP块
谷歌AI模式是一个独立的聊天风格回答页面:你提出一个问题,谷歌将其分解为多个并行子搜索,并返回一个长的综合回答,以及后续提示和自己的引用来源列表。这不是位于蓝色链接上方的AI概述框——那是一个不同的表面,由不同的演员捕获。AI模式是谷歌处理研究和比较问题的地方,它的行为更像ChatGPT或Perplexity,而不是一个结果页面。
对于品牌或研究团队来说,这个页面现在是一个主要目的地,且在大规模阅读时很困难。答案是JavaScript渲染的,布局会变动,背后的来源被埋在不定期变化的标记中。手动捕获意味着驾驶一个对话页面,这与自动化斗争。
scraper.aimode演员作为数据返回该页面,使用一次请求:一个提示被输入,结构化的答案以普通文本、markdown和HTML的形式返回,引用来源作为数组列出。下面的部分将介绍捕获请求、按字段划分的响应模式、将提示集转换为引用分享表的Python客户端,以及其他谷歌AI表面的配套演员。有关内联AI概述框,谷歌AI概述抓取涵盖了单独的scraper.overview演员。
你可以用谷歌AI模式数据做什么
- 引用份额跟踪。 定期运行一组固定的研究提示,计算AI模式为每个提示引用了哪些领域——谷歌将查询路由到AI模式的GEO指标。
- 品牌与竞争监控。 检测答案何时开始或停止提及你的产品以进行购买或比较问题,以及提及来源追溯到哪里。
- 内容空白分析。 查看AI模式为某个主题引用了哪些页面,以及你自己的哪些页面从未浮现。
- RAG和评估数据集。 将
result_text和citations输入到检索系统或评估集,形成干净的提示-答案-来源行。 - 时间上的答案差异。 每次捕获存储
result_html,并比较呈现的答案,观察谷歌的综合如何变化。 - 多地区捕获。 每次调用固定
country以比较答案及其来源在不同市场上的变化。
为什么选择Scrapeless的谷歌AI模式抓取器
Scrapeless的谷歌AI模式抓取器是scraper.aimode演员,属于通用抓取API中的一部分。专门针对AI模式,它带来了:
- 一次同步POST返回答案——无需管理触发-轮询-下载流程。
- 在一个响应中返回三种输出格式:
result_text用于嵌入,result_md用于渲染,result_html用于忠实归档。 - 统一的
citations数组 — 一个归因面,里面没有广告或购物字段混合 — 随时准备实施用于引用分享跟踪。 - 根据您传递的
country限制住宅出口,渲染和反机器人处理在服务器端进行。 - 与其他演员行相同的
x-api-token头和{ status, task_id, task_result }包装。
在 app.scrapeless.com 的免费计划中获取您的 API 密钥。
先决条件
- Python 3.10 或更新版本(下面的客户端仅使用
requests)或任何 HTTP 客户端用于 curl 调用 - 一个 Scrapeless 账户和 API 密钥 — 在 app.scrapeless.com 注册
- 以
SCRAPELESS_API_KEY导出的密钥 - 对终端和 JSON 的基本熟悉 — 无需购买浏览器、代理或 CAPTCHA 解决器
Google AI 模式抓取器的工作原理
向 /api/v2/scraper/execute 发送一次 POST 请求,使用 scraper.aimode 演员返回答案。该演员在服务器端渲染 AI 模式页面,并将其解析到响应包中。
请求参数
参数放在 input 对象内部。
input 字段 |
必需 | 描述 |
|---|---|---|
prompt |
是 | 发送到 AI 模式的自由形式问题;研究和比较用语最可靠地触发答案 |
country |
是 | 两个字母的区域代码(例如 US);为运行固定住宅出口 |
使用 curl 快速捕获
bash
# 需要环境中的 SCRAPELESS_API_KEY。
curl -sS -X POST https://api.scrapeless.com/api/v2/scraper/execute \
-H "Content-Type: application/json" \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-d '{
"actor": "scraper.aimode",
"input": {
"prompt": "2026年最佳跑步鞋",
"country": "US"
}
}'
# 管道到: | jq '.task_result.citations' 以获取引用的来源。
响应包
答案位于 task_result 下,有三种格式,citations 作为一个数组,和一个 raw_url 用于来源。下面的形状是对上述提示的实际捕获;字段值是来自实时运行的示例。
json
// Schema 是 scraper.aimode 返回的;字段值是来自实时运行(提供/引用修整)的示例。
{
"status": "success",
"task_id": "…",
"task_result": {
"result_text": "### 最佳日常训练鞋(多功能性最高)\n#### ASICS Novablast 5 — 价格:$129.95(原价 $150) | 销售商:ASICS 等 | 评分:4.x …",
"result_md": "### 最佳日常训练鞋(多功能性最高)\n\n…",
"result_html": "<div>… 渲染的 AI 模式答案 …</div>",
"citations": [
{
"website_name": "GearLab",
"title": "2026年10佳跑鞋 | 实验室测试与排名",
"url": "https://…",
"snippet": "…",
"favicon": "https://…",
"thumbnail": "https://…"
}
],
"raw_url": "https://…"
}
}
读取哪种格式取决于工作:
result_text— 简单散文,最干净的字段适用于嵌入、语言检测或快速解析。result_md— 用于渲染的 markdown 结构;请注意,它可以作为 base64 数据 URI 携带内联图像,因此在存储之前需要去除这些。result_html— 忠实渲染的答案,较大(数百 KB);保留用于归档和差异比较,而不是用于解析。citations— 结构化的归因数组;这就是您用于去重和排名以进行引用分享的内容。
从运行中得出的几条诚实观察:
- 语言未按
country限制。 相同的US提示在一次运行中返回英文答案,而在另一次中返回非英文答案。将答案语言视为变量:在下游从result_text检测并过滤,而不是假设国家决定了语言。 - 输出在不同运行中变化。 对于相同提示,引用数量和答案长度在调用之间会有变化 — 存储
task_id和捕获时间戳,因为随时间而来的系列是信号,而不是任何单一调用。 - 并非每个查询都触发 AI 模式。 对话、研究和比较提示触发答案;单纯的导航查询可能不会。措辞要带有研究意图。
- 将每个字段视为可为空。
citations可能返回为空,并且在某次运行中某种格式可能缺失;请为此进行防护,而不是假设存在。
在免费计划中获取您的 API 密钥: app.scrapeless.com
在 Python 中集成 API
规模的模式是一个固定的提示集,每次调用一次,引用平铺成领域计数。客户端从环境中读取 SCRAPELESS_API_KEY,发送提示,并构建引用领域计数,因此直接得出引用分享表。
python
"""捕获 Google AI 模式答案,以便用于提示集(scraper.aimode)。
export SCRAPELESS_API_KEY=your_api_token_here
zh
import os
from collections import Counter
from urllib.parse import urlparse
import requests
ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
PROMPTS = [
"2026年最佳跑鞋",
"小型企业最佳CRM",
"2026年最可靠的电动SUV",
]
def capture(prompt: str, country: str = "US") -> dict:
resp = requests.post(
ENDPOINT,
headers={
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
},
json={"actor": "scraper.aimode", "input": {"prompt": prompt, "country": country}},
timeout=180,
)
resp.raise_for_status()
return resp.json().get("task_result", {}) or {}
def cited_domains(task_result: dict) -> list[str]:
domains = []
for citation in task_result.get("citations") or []:
url = citation.get("url") or ""
host = urlparse(url).netloc.removeprefix("www.")
if host:
domains.append(host)
return domains
if __name__ == "__main__":
tally = Counter()
for prompt in PROMPTS:
result = capture(prompt)
text = result.get("result_text") or ""
domains = cited_domains(result)
if not text and not domains:
# 持续空 = 没有AI模式回答此查询/地区。记录并继续。
print(f"{prompt}: 没有AI模式回答")
continue
tally.update(domains)
print(f"{prompt}: {len(text)} 字符, {len(domains)} 引用")
print("\n引用份额(跨提示集的域名):")
for domain, count in tally.most_common(10):
print(f" {count:>2} {domain}")
每个提示生成回答文本和AI模式引用的域名;跨集合统计域名生成引用份额表。要跟进对话,请将后续作为其自己的提示发送——每个调用捕获一次回合,因此多步骤线程是独立捕获的顺序,关键指向相同主题。按计划将行写入仓库,引用份额、回答漂移和新来源随时间序列出现。
端到端Google-AI捕获的辅助角色
一个帐户和一个信封读取所有Google的答案表面。在演员之间捕获相同的查询、国家和时间戳,以获得完整的图片:
scraper.overview— 内联AI概述块;将所有AI概述工作发送到那里(Google AI概述抓取覆盖了它)。scraper.google.search— 相同查询的自然结果,以便与AI答案结合。scraper.chatgpt,scraper.gemini,scraper.perplexity,scraper.grok— 其余答案引擎,具有相同的{ status, task_id, task_result }形状。排名前列的最佳LLM抓取器比较在相同信封上读取这些表面。
如何避免常见问题
- 空或变化的输出。
result_text或citations可能会返回空值,计数会随着运行而变化。存储task_id和时间戳;该序列是信号。将每个字段视为可为空。 - 查询没有AI模式回答。 并非每个提示都会触发AI模式——将其表述为研究或比较问题;导航查找可能不会返回结果。
- 语言错误。 答案语言可能与您传递的
country不同,因此从result_text中检测语言并过滤,而非假设。 - 选择格式。 使用
result_text用于嵌入和语言检查,使用result_md用于渲染(去除内联base64 图片),仅在归档和对比时使用result_html。
结论:针对Google的对话答案发出一次POST
捕获Google AI模式只需一次调用:一个POST到scraper.aimode演员返回三个格式的对话答案及其引用来源数组。为研究意图表达提示,固定country,读取result_text加上citations,下游检测语言,将每个字段视为可为空。定期运行固定的提示集,使用通用抓取API积分,同时捕获AI模式及AI概述块和自然结果,以获取完整的Google-AI图景。请求形状和字段名称与实时scraper.aimode演员在LLM聊天抓取器参考中确认。
准备建立您的AI答案可见性管道?
加入我们的社区以声明免费计划,并与构建AI答案数据管道的开发人员连接:Discord · Telegram。
在 app.scrapeless.com 注册以获取免费试用积分,并将上述提示指向您可见度程序跟踪的研究问题和市场。
常见问题解答
问:抓取 Google AI 模式是否合法?
返回的数据是 Google 向任何用户展示的公开可见的 AI 模式答案。与任何抓取一样,合法性取决于管辖区和使用情况——在构建之前,请审查相关条款并咨询法律顾问,仅收集公共答案和源数据。
问:Google 提供官方的 AI 模式 API 吗?
没有。AI 模式答案没有官方端点,这就是为什么需要一个管理的角色来呈现和解析页面。
问:我需要代理或 CAPTCHA 求解器吗?
不需要。呈现、住宅出口和防机器人处理在服务器端进行。您发送一个包含 x-api-token 头的 POST 请求并读取 JSON 响应;country 字段选择出口市场。
问:AI 模式与 AI 概览有什么不同?
AI 模式是一个完整页面的对话式答案引擎,将提示扩展为多个子搜索;AI 概览是自然结果上方的内联块。它们是分开的界面,使用不同的角色——这里是 scraper.aimode,块使用 scraper.overview。
问:返回的数据格式是什么?
封装格式为 JSON: { status, task_id, task_result }。答案本身有三种形式——result_text、result_md 和 result_html——此外还有一个 citations 数组和一个 raw_url。
问:我如何提取引用的来源?
阅读 task_result.citations;每个条目包含来源标题、URL、网站名称和摘要。从每个 URL 中解析主机,并在捕获中进行统计以获取引用份额。
问:我应该使用哪个格式进行 RAG?
对于嵌入,请使用 result_text,或者当您需要结构时使用 result_md——在去掉任何内联的 base64 图像之后。保留 result_html 作归档,不用于检索。
问:我可以捕获特定国家的答案吗?
传递 country 代码以根据市场固定住宅出口。它控制出口区域;答案语言仍可能不同,因此请在后续处理中检测并过滤语言。
问:为什么我的响应为空或与浏览器不同?
查询可能没有触发 AI 模式,区域可能不同,或者输出在不同运行之间有所变化。请根据研究意图措辞,固定 country,存储 task_id 及时间戳,并将字段视为可为 null。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



