news 2026/10/28 1:40:56

谷歌新闻数据采集教程:Python实时抓取新闻做舆情监控(附代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谷歌新闻数据采集教程:Python实时抓取新闻做舆情监控(附代码)

做品牌公关、竞品分析、行业研究的同学,应该都有过这样的需求:盯着某个关键词,看每天都有什么新闻在报。手动搜太费时间,专门买舆情系统又太贵。这篇教大家用谷歌新闻 API 自动化采集新闻数据,自己做一套轻量舆情监控——定时抓取、存库、按来源和时间归类,一套代码全搞定。

先看要解决什么

新闻监控的核心数据是:谁、什么时候、发了什么。具体说就是每条新闻的标题、来源媒体、发布时间、摘要和链接。谷歌新闻的结果页正好把这些信息排好了,用 API 搜一次就能拿到结构化的 JSON,不需要解析网页。

我用的接口是 SerpBase(官网 serpbase.dev)的/google/news/search端点,按量付费,注册送 500 次免费搜索。

第一步:抓取一个关键词的新闻

核心接口:POST https://api.serpbase.dev/google/news/search,带X-API-Key请求头。

importrequests API_KEY="在这里填你的Key"URL="https://api.serpbase.dev/google/news/search"resp=requests.post(URL,headers={"Content-Type":"application/json","X-API-Key":API_KEY},json={"q":"OpenAI","hl":"zh-cn","gl":"cn"},timeout=30,)data=resp.json()fornewsindata.get("news",[])[:10]:print(news.get("title"))print(" 来源:",news.get("source"),"| 时间:",news.get("time"))print(" 链接:",news.get("link"))print(" 摘要:",news.get("snippet","")[:80])print()

返回的news数组里,每条新闻自带:

  • title:标题
  • source:来源媒体(如「新华社」)
  • time/published_at:发布时间文本
  • link:文章链接
  • snippet:摘要

第二步:多关键词批量采集

把要监控的关键词放进列表,逐个抓取,结果落进数据库或表格:

importrequestsimportcsvimportdatetime API_KEY="在这里填你的Key"URL="https://api.serpbase.dev/google/news/search"KEYWORDS=["OpenAI","AI 大模型","SERP API"]rows=[]forkwinKEYWORDS:resp=requests.post(URL,headers={"Content-Type":"application/json","X-API-Key":API_KEY},json={"q":kw,"hl":"zh-cn","gl":"cn"},timeout=30,)fornewsinresp.json().get("news",[]):rows.append([kw,news.get("title",""),news.get("source",""),news.get("time",""),news.get("link",""),news.get("snippet",""),])print(f"{kw}:{len(resp.json().get('news',[]))}条")withopen(f"news_{datetime.date.today().isoformat()}.csv","w",newline="",encoding="utf-8-sig")asf:writer=csv.writer(f)writer.writerow(["关键词","标题","来源","时间","链接","摘要"])writer.writerows(rows)print(f"已导出{len(rows)}条新闻")

文件名带上日期,每天跑一次就是一份「舆情日报」存档。

第三步:加个每日定时

脚本本身无状态,直接用系统任务计划每天跑一次即可(Windows 用「任务计划程序」,Linux 用 cron)。配合一个简单的变化检测,就能实现告警:

# 伪代码:和昨天对比,出现新来源就提醒yesterday_sources=set(load_csv("news_2026-08-20.csv")["来源"])today_sources=set(load_csv("news_2026-08-21.csv")["来源"])new_sources=today_sources-yesterday_sourcesifnew_sources:send_alert(f"出现新报道来源:{new_sources}")

把「采集」和「对比」拆成两步,监控逻辑会清晰很多。

费用说明

  • /google/news/search每次扣1 credit,与网页、图片、视频端点同价
  • 注册送 500 次免费搜索,先把流程跑通再付费
  • 标准包 $10 买 2 万次($0.50/千次),永不过期;10 个关键词每天跑一次,一个月才 300 次
  • 未执行不计费;可证明未执行的失败自动退,超时可能已执行、不自动退——重试要控制次数

常见问题

Q:source和time有时是空值?
A:这两个字段是从谷歌紧凑的元数据文本里解析出来的,属于可选字段,代码里用.get()兜底就行。

Q:能监控英文媒体吗?
A:可以,改hl=en、gl=us就是英文美国市场的结果,跨境电商、出海产品舆情都可以用。

Q:采集新闻数据有什么合规注意点?
A:采集的数据用于内部监控没问题,转载发布请遵守版权规定,本文只讲技术实现。

结语

一套新闻采集 = 一个接口 + 一个循环 + 一张表。跑通之后,你就有了一份可持续更新的舆情数据库,后续做周报、做趋势分析都是基于同一份数据。

完整参数见 SerpBase 官方文档,新闻端点的返回结构很规整。先跑通第一步,看看你能抓到多少条新闻再说。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:37:07

Yuzu版本管理指南:三步完成版本挑选、校验与旧构建回退

Yuzu版本管理指南:三步完成版本挑选、校验与旧构建回退 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 针对新版 yuzu 模拟器构建异常、需要回退到旧版本的具体场景,本文以 yuzu-downloads …

作者头像 李华
网站建设 2026/10/28 1:36:02

C# 台账记录系统源码拆包:WinForms 增删改查与 Excel 导出实战

简介:这是一份面向C#初学者与中小型企业管理软件开发者的台账记录系统设计源码,可用于学习WinForms桌面应用的分层架构与业务实现,也可作为企业台账管理工具的二次开发基础。压缩包共67个文件、约384KB,以41个C#源代码文件为核心&…

作者头像 李华
网站建设 2026/10/28 1:32:07

2008-2023年 地级市-共同富裕指数(数据+代码+文献)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/28 1:22:13

Java派单系统源码深度拆解:从后端架构到Android实战

简介:一套基于Java开发的派单系统完整项目,包含Android客户端源码与说明文档,面向服务行业订单分配场景(如外卖、家政),适合希望系统学习Java服务端与Android移动端全栈开发的初中级开发者。资源包共11019个…

作者头像 李华