用途
Google News 是 Google 提供的免费新闻聚合服务,汇集全球数千家出版商的头条新闻。该技能通过 Google 公开的 RSS 2.0 接口访问其内容,无需认证或 API 密钥,可直接开始抓取。
主要能力
基础地址与查询参数
基础 URL 为 https://news.google.com/rss,所有订阅源 URL 均在此基础上追加路径和查询参数。每个订阅源 URL 都接受以下参数控制地区和语言:
hl(必填):界面语言 / 区域代码,例如 en-US、fr、de、ja、pt-BR、es-419gl(必填):国家 / 地理区域(ISO 3166-1 alpha-2),例如 US、GB、IN、DE、JP、BRceid(必填):复合区域键,格式为 {gl}:{language},例如 US:en、GB:en、DE:de、JP:ja、BR:pt-419
三个参数应保持一致,不匹配的值可能返回意外或空结果。
已验证的支持地区
资料中列出以下地区已测试并确认返回有效 RSS(HTTP 200):
- 美国:hl=en-US,gl=US,ceid=US:en
- 英国:hl=en-GB,gl=GB,ceid=GB:en
- 印度:hl=en-IN,gl=IN,ceid=IN:en
- 澳大利亚:hl=en-AU,gl=AU,ceid=AU:en
- 加拿大:hl=en-CA,gl=CA,ceid=CA:en
- 德国:hl=de,gl=DE,ceid=DE:de
- 法国:hl=fr,gl=FR,ceid=FR:fr
- 日本:hl=ja,gl=JP,ceid=JP:ja
- 巴西:hl=pt-BR,gl=BR,ceid=BR:pt-419
- 墨西哥:hl=es-419,gl=MX,ceid=MX:es-419
- 以色列:hl=en-IL,gl=IL,ceid=IL:en
订阅源类型
1. 头条新闻
返回指定地区的当前头条新闻。URL 模式:https://news.google.com/rss?hl={hl}&gl={gl}&ceid={gl}:{lang}。例如美国头条:https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en。
2. 主题订阅源
返回特定新闻主题 / 版块的文章。URL 模式:https://news.google.com/rss/topics/{TOPIC_ID}?hl={hl}&gl={gl}&ceid={gl}:{lang}。资料中给出英语(美国)的已知主题 ID:世界、美国国内、商业、科技、娱乐、体育、科学、健康。主题 ID 是 base64 编码的 protocol buffer 字符串,可能因语言 / 地区而异;上述 ID 适用于 en-US,其他区域需在对应区域的 Google News 网站上查看 RSS 链接以获取正确 ID。
3. 关键词 / 搜索订阅源
返回匹配搜索查询的文章。URL 模式:https://news.google.com/rss/search?q={query}&hl={hl}&gl={gl}&ceid={gl}:{lang}。支持的查询修饰符包括:+ 或空格表示 AND(默认)、OR 表示或、- 排除词、"..." 精确短语(需 URL 编码引号)、when:7d / when:1h 时间过滤、after:YYYY-MM-DD 和 before:YYYY-MM-DD 日期范围、site: 限定域名。
RSS 响应格式
所有订阅源返回 RSS 2.0 XML。每个 <item> 的关键字段:
<title>:标题文本后跟- 出版商名称<link>:Google News 跳转 URL,浏览器访问会重定向到实际文章<guid>:唯一标识(与<link>相同)<pubDate>:RFC 2822 格式的发布时间<description>:HTML 片段,包含相关 / 聚类文章的有序列表(<ol>),含链接和出版商名称<source url="...">:出版商名称和主页 URL
使用方式
资料提供了多种语言的示例代码,包括:
- 使用 curl + grep 抓取头条
- 使用 Python 的 feedparser 解析头条、主题订阅源和搜索订阅源
- 使用 curl + xmllint 抓取主题订阅源
- 使用 Node.js 的 https 和 xml2js 抓取指定地区新闻
- 使用 Python 的 HTMLParser 从 description 中提取相关文章
- 使用 Python 构建多地区新闻聚合器
- 使用 bash 轮询监控主题
- 解析 Google News 跳转 URL(curl 使用
-Ls -o /dev/null -w '%{url_effective}',Python 使用 requests.head 并允许重定向)
适用场景
- 按地区获取头条新闻
- 按主题(科技、商业、体育等)获取新闻
- 按关键词、时间范围、域名搜索新闻
- 构建多地区新闻聚合器
- 轮询监控特定主题的突发新闻
- 从聚类描述中提取同一事件的多来源报道
限制与注意事项
- Google 未公布官方速率限制。根据社区观察:同一订阅源轮询间隔建议 ≥ 60 秒;并发连接保持在约 10 以下;快速突发可能触发 HTTP 429 或 CAPTCHA;建议使用描述性 User-Agent,空或类似机器人的字符串可能被屏蔽。收到 HTTP 429 时应指数退避(如 1 分钟 → 2 分钟 → 4 分钟)。
- 错误处理:200 成功解析;301/302 跟随重定向;404 检查 URL、主题 ID 或区域参数;429 退避重试;5xx 指数退避重试。
- 主题 ID 因区域而异,英语主题 ID 可能不适用于 hl=de,需在对应区域页面查找正确 ID。
<description>字段是 HTML,包含聚类 / 相关文章的有序列表,需解析 HTML 以提取每个故事的多个来源。<title>包含出版商,格式为标题文本 - 出版商名称,可从右侧按-(空格-连字符-空格)分割。- 订阅源结果有限,Google 通常每个订阅源返回约 100 条;可使用带日期过滤的搜索翻页获取更早结果。
- 需遵守版权声明:Google 的 RSS 订阅源面向个人、非商业用途的阅读器使用,其他用途请查阅 Google 条款。
- 建议延迟解析跳转 URL,仅在真正需要最终链接时再解析,以节省请求。
- 建议设置合适的 User-Agent,例如
User-Agent: MyNewsBot/1.0 (contact@example.com),某些环境无此可能被屏蔽。
版本
0.1.0 — 初始版本,包含头条、主题订阅源、搜索订阅源、多地区支持及常见用法模式。