ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

谷歌 AI 概览采集教程:Python 抓取 AI Overview 与引用来源(附代码)

谷歌 AI 概览采集教程:Python 抓取 AI Overview 与引用来源(附代码) 搜索「怎么挑跑鞋」结果页最上面先给你一段 AI 生成的总结下面挂着几个小链接——这就是AI 概览AI Overview。对做 SEO、内容、品牌的人来说它是新的曝光入口你的内容被 AI 概览引用比自然排名第 5 更值钱。这篇教程带你用 Python 把 AI 概览采下来有没有、引用了谁、变化趋势全都能监控。AI 概览的数据在哪搜索接口的响应里AI 概览是顶层的一个可选模块有就返回ai_overview没有就整个字段都不在。先记住这一条不是每个关键词都有 AI 概览代码里必须判空别硬取。第一步探测某个词有没有 AI 概览importos,requestsdeffetch_serp(keyword,hlzh-cn,glcn):resprequests.post(https://api.serpbase.dev/google/search,headers{Content-Type:application/json,X-API-Key:os.environ[SERPBASE_API_KEY]},json{q:keyword,hl:hl,gl:gl},timeout30,)resp.raise_for_status()returnresp.json()datafetch_serp(怎么挑选跑鞋)aidata.get(ai_overview)ifnotai:print(该关键词没有 AI 概览)else:print(有 AI 概览字段如下)importjsonprint(json.dumps(ai,ensure_asciiFalse,indent2)[:800])调试第一步永远是先把 JSON 打印出来看。AI 概览的结构会随谷歌调整照抄别人的解析代码容易过期看实际返回最稳。第二步解析引用来源AI 概览最核心的可分析部分是它引用的来源链接。结构拿到后写一个「层层.get()」的提取函数defextract_sources(ai:dict)-list[dict]:从 ai_overview 里提取引用来源标题 链接。字段缺失一律跳过。sources[]# 引用来源一般在一个数组里每项带 title/link实际字段名以你打印出的 JSON 为准foritemin(ai.get(sources)orai.get(links)or[]):linkitem.get(link)oritem.get(url)iflink:sources.append({title:item.get(title),link:link})returnsources sourcesextract_sources(aior{})forsinsources:print(-,s[title],|,s[link])两个要点用or兼容多种可能字段名谷歌调整时不用全改拿不到就跳过而不是报错——采集代码的第一素质是「不崩」。第三步批量采集统计出现率与引用域fromcollectionsimportCounterfromurllib.parseimporturlparse keywords[怎么挑选跑鞋,Python 虚拟环境,咖啡 手冲 水温]ai_count0domain_counterCounter()forkwinkeywords:datafetch_serp(kw)aidata.get(ai_overview)ifnotai:continueai_count1forsinextract_sources(ai):domain_counter[urlparse(s[link]).netloc]1print(f{len(keywords)}个词里{ai_count}个有 AI 概览)print(被引用最多的域名)fordomain,nindomain_counter.most_common(10):print(f{domain}:{n}次)跑完你会得到两个很有用的结论哪类词更容易触发 AI 概览、哪些站点总被引用顺便看看有没有你自己。第四步存入数据库监控变化AI 概览的出现和消失本身就是信号。按天存下来importsqlite3,datetime consqlite3.connect(serp.db)con.execute( CREATE TABLE IF NOT EXISTS ai_overview ( keyword TEXT NOT NULL, day TEXT NOT NULL, has_ai INTEGER NOT NULL, sources TEXT, PRIMARY KEY (keyword, day) ) )defsave(kw,ai,sources):daydatetime.date.today().isoformat()con.execute(INSERT OR REPLACE INTO ai_overview VALUES (?, ?, ?, ?),(kw,day,1ifaielse0,json.dumps(sources,ensure_asciiFalse)ifsourceselseNone),)con.commit()存成「有没有 来源 JSON」后就能查「哪些词的 AI 概览这周出现了」「我的域名上周被引了 5 次这周 0 次」这类问题。踩坑记录坑 1假设每个词都有 AI 概览。某些类目购物、YMYL出现率高很多长尾词根本没有。判空是常态逻辑不是容错。坑 2照抄固定解析路径。ai[sections][0][items]这种硬索引谷歌一调结构就全崩。全部走.get()or兜底解析失败先打印原文。坑 3把「引用来源为空」当没有 AI 概览。两回事有概览但没引用、没概览要分开统计混在一起趋势就失真。坑 4市场口径乱。同一个词中文和英文结果页的 AI 概览可能完全不同。监控固定hl/gl别今天中文明天英文。坑 5采集频率过高。AI 概览变化以天为尺度日频足够。频率翻倍只是把 credits 烧快一倍。小结AI 概览采集的完整路径探测有无 → 提取引用来源 → 批量统计 → 按天入库。它把你的视角从「我的网页排第几」升级到「AI 回答里引用了谁」——在 AI 搜索时代后者可能更接近真正的流量入口。模块字段ai_overview属于可选模块的说明见 SerpBase 官方文档。建议先拿 20 个自己的目标词跑一遍看看 AI 概览出现率——这个数字本身就会给你不少选题灵感。
返回列表