Python+AI 打造每日新闻简报应用(聚合热搜 + 智能摘要 + 语音播报)

一、教程概述

本教程将带你从零搭建一款 AI 驱动的每日新闻简报应用「Briefy」,核心功能包括聚合多平台热搜、AI 智能摘要、语音播报,最终实现 “5 分钟掌握全网热点” 的高效信息获取工具。适合有 Python 基础、对 AI 应用开发感兴趣的开发者,全程无需复杂底层开发,聚焦 “数据爬取 + AI 集成 + 功能落地” 全流程。

二、核心技术栈与环境准备

  1. 技术栈选型
    核心语言:Python 3.9+(稳定性适配各类依赖库)
    数据爬取:Requests(接口请求)、BeautifulSoup4(网页解析)、Selenium(动态页面渲染,可选)
    AI 智能摘要:大模型 API(推荐数眼智能 / 通义千问 / OpenAI API,支持中文优化)
    语音播报:pyttsx3(离线语音)或百度语音合成 API(在线高质量语音)
    数据存储(可选):SQLite(轻量本地存储)、Redis(热点数据缓存)
    打包工具(可选):PyInstaller(生成桌面可执行文件)
  2. 环境搭建步骤
    安装 Python 环境:官网下载 Python 3.9+,勾选 “Add Python to PATH” 完成安装。
    创建虚拟环境(推荐):
# 新建虚拟环境 python -m venv briefy-env # 激活环境(Windows) briefy-env\Scripts\activate # 激活环境(Mac/Linux)source briefy-env/bin/activate 
  1. 安装依赖库:
pip install requests beautifulsoup4 pyttsx3 openai # 基础依赖 pip install selenium # 如需爬取动态页面(如部分热搜榜) pip install pysqlite3 # 如需本地存储 pip install pyinstaller # 如需打包成桌面应用

三、分步实现核心功能

模块 1:多平台热搜数据爬取(核心数据源)
目标:爬取百度、今日头条、凤凰网、财联社等平台热搜,提取新闻标题、链接、发布时间。

  1. 爬取思路
    优先使用平台公开 API(无反爬,效率高),无 API 则用网页解析。
    为避免反爬,设置请求头(User-Agent)、控制爬取频率(time.sleep)。
  2. 代码实现(以百度热搜为例)
import requests from bs4 import BeautifulSoup import time # 定义爬取函数defcrawl_baidu_hot(): hot_news =[] url ="https://top.baidu.com/board?tab=realtime"# 百度实时热搜榜 headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}try: response = requests.get(url, headers=headers, timeout=10) response.raise_for_status()# 抛出请求异常 soup = BeautifulSoup(response.text,"html.parser")# 解析热搜条目(根据网页结构调整选择器) news_items = soup.select(".category-wrap_iQLoo a")for item in news_items[:10]:# 取前10条热点 title = item.get("title")# 新闻标题 link = item.get("href")# 新闻链接if title and link: hot_news.append({"platform":"百度","title": title,"link": link,"time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}) time.sleep(2)# 控制爬取频率except Exception as e:print(f"百度热搜爬取失败:{e}")return hot_news # 扩展:其他平台爬取(今日头条/凤凰网等)defcrawl_toutiao_hot():# 类似逻辑,替换 url 和解析规则,可参考今日头条公开热搜接口pass# 聚合所有平台数据defcrawl_all_platforms(): all_news =[] all_news.extend(crawl_baidu_hot()) all_news.extend(crawl_toutiao_hot())# 新增其他平台爬取函数...return all_news 

模块 2:AI 智能摘要(核心效率功能)
目标:调用大模型 API,将长新闻内容或多条热点压缩为简洁摘要(50 字以内)。

  1. 实现步骤
    申请大模型 API 密钥(以通义千问为例,前往阿里云控制台申请)。
    编写摘要函数,传入新闻标题 / 内容,返回 AI 生成的摘要。
  2. 代码实现
import openai # 若使用 OpenAI API;通义千问需安装 alibabacloud_tea_openapi# 配置大模型(以通义千问为例,替换为自己的 API 信息)definit_llm_client():from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_qwenlite20240118 import models as qwen_models from alibabacloud_qwenlite20240118.client import Client as QwenLiteClient config = open_api_models.Config( access_key_id="你的AccessKeyId", access_key_secret="你的AccessKeySecret", endpoint="qwenlite.cn-hangzhou.aliyuncs.com")return QwenLiteClient(config)# AI 摘要生成函数defgenerate_news_summary(news_title, llm_client): prompt =f"请将以下新闻标题生成50字以内的简洁摘要,突出核心信息:{news_title}"try: request = qwen_models.ChatCompletionRequest( model="qwen-turbo",# 轻量版模型,速度快、成本低 messages=[{"role":"user","content": prompt}], temperature=0.3# 控制摘要准确性,越低越严谨) response = llm_client.chat_completion(request) summary = response.body.output.choices[0].message.content return summary except Exception as e:print(f"摘要生成失败:{e}")return news_title # 失败时返回原标题# 批量处理所有新闻摘要defbatch_generate_summaries(news_list, llm_client):for news in news_list: summary = generate_news_summary(news["title"], llm_client) news["summary"]= summary return news_list 

模块 3:语音播报(场景化功能)
目标:将 AI 摘要转换为语音,支持离线播放(通勤场景适配)。

  1. 离线语音实现(pyttsx3)
import pyttsx3 # 初始化语音引擎definit_voice_engine(): engine = pyttsx3.init()# 配置语音参数(语速、音量、音色) engine.setProperty('rate',150)# 语速(默认200,150更易听) engine.setProperty('volume',1.0)# 音量(0.0-1.0)# 选择音色(Windows需安装中文语音包) voices = engine.getProperty('voices')for voice in voices:if"Chinese"in voice.name or"中文"in voice.name: engine.setProperty('voice', voice.id)breakreturn engine # 语音播报摘要defvoice_broadcast(news_list, engine): engine.say("欢迎收听今日新闻简报")for i, news inenumerate(news_list[:5]):# 播报前5条热点 content =f"第{i+1}条,来自{news['platform']}:{news['summary']}"print(content) engine.say(content) engine.say("新闻简报播放完毕,祝您生活愉快") engine.runAndWait()# 执行播报

模块 4:整合与落地(完整流程串联)
将爬取、摘要、播报功能整合,实现 “一键生成简报”,可选本地存储功能。

defmain():# 1. 爬取多平台热搜print("正在爬取全网热点...") news_list = crawl_all_platforms()ifnot news_list:print("未获取到新闻数据,请检查网络或爬取规则")return# 2. 初始化大模型客户端,生成摘要print("正在生成AI摘要...") llm_client = init_llm_client() news_list_with_summary = batch_generate_summaries(news_list, llm_client)# 3. 初始化语音引擎,播报新闻print("开始语音播报...") voice_engine = init_voice_engine() voice_broadcast(news_list_with_summary, voice_engine)# 可选:本地存储新闻简报(SQLite)# save_to_sqlite(news_list_with_summary)print("今日新闻简报完成!")if __name__ =="__main__": main()

四、优化与扩展功能

  1. 基础优化
  • 反爬增强:添加 IP 代理池(避免爬取频繁被封)、随机请求间隔。
  • 摘要优化:调整 prompt 让摘要更聚焦 “事件 + 影响”,例如:“请生成 50 字内摘要,包含事件主体、核心动作、关键结果”。
  • 语音优化:使用百度语音合成 API 替换 pyttsx3,支持情感语音、语速自定义(需申请 API 密钥)。
  1. 扩展功能
  • 定时生成:用 schedule 库设置每日固定时间自动爬取 + 播报(适合挂机使用)。
  • 分类筛选:增加 “科技”“财经”“娱乐” 等分类标签,支持用户自定义订阅。
  • 桌面应用打包:用 PyInstaller 生成 .exe 文件(Windows),双击启动:
pyinstaller -F -w -i icon.ico main.py # -w 隐藏命令行窗口,-i 设置图标
  • 多端同步:将简报存储到云盘(如阿里云 OSS),支持手机端查看。

五、常见问题排查

  1. 爬取失败:检查目标平台网页结构是否变更(需同步更新解析规则)、请求头是否完整、网络是否通畅。
  2. 摘要生成失败:确认 API 密钥是否有效、余额是否充足、网络是否能访问大模型服务器。
  3. 语音无声音:Windows 需安装中文语音包(控制面板→语音识别→文本到语音),Mac/Linux 需安装对应语言引擎。
  4. 运行卡顿:减少同时爬取的平台数量、使用轻量版大模型(如通义千问 turbo、GPT-3.5-turbo)。

六、最终效果演示

运行 main.py 后,程序将自动完成:

  1. 爬取百度、今日头条等平台热点(10-20 条)。
  2. 调用 AI 生成每条热点的 50 字内摘要。
  3. 语音播报前 5 条核心热点,通勤路上无需看屏即可掌握全网动态。

通过本教程,你不仅能获得一款实用的新闻简报工具,还能掌握 Python 爬虫、AI 大模型集成、语音合成等核心技能,可基于此拓展更多 AI 应用(如 AI 监控、智能报告生成等)私聊我可以获取数眼智能免费测试次数。

Read more

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

在现代前端开发中,从设计稿到可用页面的交付往往需要大量重复劳动:切图、手写样式、布局调整……而借助 MCP Server - Figma AI Bridge,我们可以将 Figma 设计稿自动转换成整洁的 HTML/CSS/JS 代码,并立即生成可预览的网页。一键化、傻瓜式操作,让设计交付效率跃升。 本文测试使用的系统环境如下: * Trae IDE 版本:2.4.5 * macOS 版本:14.7 * Node.js 版本:24.6.0 * npx 版本:11.5.2 * Python 版本:3.13.3

By Ne0inhk
深入解析WebView的概念、功能、应用场景以及使用过程中的优势与挑战

深入解析WebView的概念、功能、应用场景以及使用过程中的优势与挑战

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_ZEEKLOG博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》 文章目录 * * 一、引言 * 二、WebView概述 * 三、WebView的功能与应用场景 * 四、WebView的优势与挑战 * 五、WebView的使用示例 * 六、总结 摘要: 本文详细介绍了App中WebView的概念、功能、应用场景以及使用过程中的优势与挑战。通过对WebView的深入剖析,帮助开发者更好地理解和运用这一技术,在App开发中实现更丰富的功能和更好的用户体验。 一、引言 在移动应用开发领域,为了在App中展示网页内容、集成Web应用或实现与网页的交互功能,WebView是一种常用的技术手段。它为开发者提供了一种在原生App中嵌入Web内容的

By Ne0inhk
Web 毕设篇-适合练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)

Web 毕设篇-适合练手的 Spring Boot Web 毕业设计项目:智驿AI系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-ZEEKLOG博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         AI系统具有许多优势         1.0 项目介绍         1.1 项目功能         1.2 用户端功能         2.0 用户登录         3.0 首页界面         4.0 物件管理功能         5.0 用户管理功能         6.0 区域管理功能         7.0 物件日志管理功能         8.0 操作日志         AI系统具有许多优势         1)自动化:AI 系统能够自动化执行任务,减少人力和时间成本。它们可以自动处理大量数据并执行复杂的计算,从而提高效率。         2)智能决策:AI 系统可以通过学习和分析数据来做出智能决策。

By Ne0inhk
离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

过去一年多,我做了一个挺重要的决定:辞职,去韩国留学读研。 这段时间我几乎没怎么学习新的前端内容,但也没有停下来。我在韩国亚洲大学完成了计算机科学与技术(大数据)硕士的学习,在高强度的节奏里重新建立了自己的方法,也因为持续写博客获得了一些机会,担任本科 Web 实训课讲师。现在这段留学告一段落,我也准备重新回到前端领域,把这段经历当作一份额外的积累带回去。这篇复盘主要是想把这一路的收获、疲惫和一些值得记住的瞬间记录下来,留给未来的自己,也分享给路过的你。 文章目录 * 1、写在前面:我为什么会从前端转去读研 * 2、留学生活的关键词:卷、AI、被看见以及校庆的“放开玩” * 3、我的“结果卡片” * 4、得:这一年半我真正收获的东西 * 5、失:我付出的代价 * 6、期末周:我经历过的“高强度交付周” * 7、前端三年经验,如何在读研里“迁移复用” * 8、我在韩国的学习系统:

By Ne0inhk