
構(gòu)建基于Claude MCP的天氣查詢智能體 | 實(shí)戰(zhàn)落地示例
目前 Google 官方已不再開(kāi)放傳統(tǒng)意義上的 Google News API,但我們可以通過(guò)以下方式實(shí)現(xiàn)相同目的:
方案類型 | 實(shí)現(xiàn)工具或平臺(tái) | 特點(diǎn)說(shuō)明 |
---|---|---|
非官方 API | SerpAPI(推薦) | 封裝 Google 新聞搜索結(jié)果,提供 JSON 格式 |
自行爬蟲 | BeautifulSoup + requests | 靈活但易被反爬,穩(wěn)定性差 |
RSS 聚合 | Google News RSS Feed | 簡(jiǎn)單易用,支持基礎(chǔ)訂閱 |
本文聚焦于使用 SerpAPI 這一最穩(wěn)定、開(kāi)發(fā)者友好的方式。
pip install google-search-results
或使用:
pip install serpapi
from serpapi import GoogleSearch
params = {
"engine": "google_news",
"q": "人工智能",
"api_key": "YOUR_API_KEY",
"hl": "zh-cn",
"gl": "cn",
"num": 10
}
search = GoogleSearch(params)
results = search.get_dict()
news = results.get("news_results", [])
for item in news:
print(f"標(biāo)題:{item['title']}")
print(f"鏈接:{item['link']}")
print(f"摘要:{item['snippet']}")
print(f"來(lái)源:{item.get('source', {}).get('name')}")
print("-" * 30)
每條 news_results
包含字段:
title
: 新聞標(biāo)題link
: 原始鏈接snippet
: 摘要source.name
: 新聞來(lái)源date
: 發(fā)布時(shí)間thumbnail
: 圖片(部分結(jié)果)import csv
with open("news.csv", "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f)
writer.writerow(["標(biāo)題", "鏈接", "摘要", "來(lái)源", "時(shí)間"])
for item in news:
writer.writerow([
item["title"],
item["link"],
item["snippet"],
item.get("source", {}).get("name", ""),
item.get("date", "")
])
cron
每小時(shí)或每日調(diào)度;你可以基于 Google News API 獲取的數(shù)據(jù),進(jìn)一步構(gòu)建智能功能:
使用 NLP 工具如 TextBlob、SnowNLP 或 OpenAI API,對(duì)每條新聞情緒進(jìn)行打分:
from textblob import TextBlob
polarity = TextBlob(item["snippet"]).sentiment.polarity
結(jié)合關(guān)鍵字或機(jī)器學(xué)習(xí)算法對(duì)新聞進(jìn)行分類,如財(cái)經(jīng)、科技、娛樂(lè)、健康等。
將新聞?wù)蛟妮斎?GPT 模型,生成 60 字中文總結(jié):
prompt = f"請(qǐng)用中文簡(jiǎn)要總結(jié)以下新聞內(nèi)容:{item['snippet']}"
問(wèn)題類型 | 解決方案 |
---|---|
API 返回為空 | 檢查關(guān)鍵詞拼寫,或更換語(yǔ)言、地區(qū)參數(shù) |
請(qǐng)求失敗 | 添加異常捕獲,設(shè)置重試機(jī)制 |
報(bào)錯(cuò) 429 Too Many Requests |
設(shè)置 sleep,或升級(jí)到更高計(jì)劃 |
示例:
import time
from requests.exceptions import RequestException
try:
search = GoogleSearch(params)
results = search.get_dict()
except RequestException:
print("請(qǐng)求過(guò)多,等待 10 秒后重試")
time.sleep(10)
應(yīng)用場(chǎng)景 | 實(shí)施方式 |
---|---|
輿情監(jiān)控系統(tǒng) | 自動(dòng)抓取特定關(guān)鍵詞新聞,并結(jié)合情緒分析與關(guān)鍵詞抽取 |
內(nèi)容采集平臺(tái) | 按地域和主題分類匯總新聞,用于門戶、微信公眾號(hào)內(nèi)容分發(fā) |
金融情報(bào)抓取 | 關(guān)注股市變動(dòng)、公司名稱新聞事件,結(jié)合行情預(yù)測(cè)模型 |
文章素材收集 | 抓取某個(gè)領(lǐng)域的最新新聞并自動(dòng)整理摘要寫入 Notion |
平臺(tái) | 免費(fèi)額度 | 數(shù)據(jù)實(shí)時(shí)性 | 多語(yǔ)言支持 | 結(jié)構(gòu)化數(shù)據(jù) | 使用復(fù)雜度 |
---|---|---|---|---|---|
SerpAPI | ? 每月 100 條 | ? 優(yōu)秀 | ? 多語(yǔ)種 | ? JSON | ??(易用) |
NewsAPI.org | ? 已不支持 Google News | ? 好 | ? 多語(yǔ)種 | ? JSON | ??? |
GNews.io | ? 限制較多 | ? 5\~15 分鐘延遲 | ? | ? | ?? |
RSS Feed 抓取 | ? | ? 緩慢 | ? | ? HTML | ???? |
結(jié)論:在抓取 Google 新聞這一垂直領(lǐng)域,SerpAPI 是目前最穩(wěn)定、最易用的開(kāi)發(fā)者解決方案。
通過(guò)本文你已掌握:
構(gòu)建基于Claude MCP的天氣查詢智能體 | 實(shí)戰(zhàn)落地示例
深入解讀 API Gateway:設(shè)計(jì)原則、實(shí)踐與最佳架構(gòu)
使用MCP服務(wù)在Cursor中集成高德地圖API教程
Akamai API Security 如何保護(hù) Web 應(yīng)用程序免受攻擊
API 認(rèn)證:JWT、OAuth 與 API KEY對(duì)比
Python與Ollama的開(kāi)發(fā)案例
深入解析 DeepSeek API 密鑰:獲取、使用與最佳實(shí)踐
深入解析什么是API安全
Dify 全鏈路實(shí)戰(zhàn):三步搭建智能天氣查詢機(jī)器人(Agent+DeepSeek + 高德天氣)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)