用途:gnews 通过 CDP 在用户自己的浏览器中访问 Google 搜索的新闻标签(tbm=nws),抓取并返回结构化新闻结果,每条包含 title、url、source、snippet、time。url 是发布者直链,而非 news.google.com 跳转包装。
主要能力:支持快速搜索与 JSON 输出,例如 gnews "your query"、gnews "your query" 5、gnews --json "your query" 3。每次调用创建独立标签页并使用独立 sessionId,可并行运行而不互相干扰。--json 模式始终输出合法 JSON,0 结果返回 []。
使用方式:依赖 browser-harness-js 提供 CDP 会话。若 gnews 不在 PATH,可直接通过 browser-harness-js 执行等价逻辑:连接会话、创建后台标签页、附加目标、启用 Page 事件与生命周期事件、在导航前等待 networkIdle、导航到 google.com/search?q=...&tbm=nws&num=N、用 Runtime.evaluate 提取结果、最后关闭标签页。跟随结果链接时同样通过 browser-harness-js 导航并提取正文。
适用场景:需要以结构化形式获取 Google News 搜索结果、并希望拿到发布者原始链接的场景;适合并行查询与后续正文抓取。
限制:新闻标签页不分页,每页约 10–15 条,num 超过该范围无效;实际结果数可能少于请求数,突发新闻查询可能返回 0;部分区域可能出现同意/ Cookie 墙导致 0 结果;标题使用 div[role=heading] 而非 h3;每次调用约 2–3 秒,主要耗时在 networkIdle 等待;必须同时调用 Page.enable 与 Page.setLifecycleEventsEnabled,否则 networkIdle 不会触发。