自动科技新闻摘要邮件机器人:每日准时获取最新科技动态
自动科技新闻摘要邮件机器人是一个基于 Python 的自动化项目,它能从CCTV科技频道定时抓取最新新闻,并生成美观的HTML摘要邮件发送到指定邮箱。项目利用 GitHub Actions 实现免费自动化部署,无需服务器,实现了从数据抓取、处理到发送的全流程自动化。
想要每天自动获取最新的科技新闻,却不想手动浏览网站?这个Python项目可以帮你解决这个问题。它能够自动抓取CCTV科技频道的最新新闻,生成美观的HTML邮件,并定时发送到你的邮箱。
项目亮点
-
✅ 全自动运行:每天定时发送,无需手动操作
-
✅ 真实数据源:直接抓取CCTV科技频道最新新闻
-
✅ 美观邮件模板:响应式HTML设计,多设备适配
-
✅ 免费部署:使用GitHub Actions,无需服务器
-
✅ 稳定可靠:3次重试机制,确保任务成功率
技术栈
| 技术 | 用途 |
|---|---|
| Python 3.9 | 核心编程语言 |
| Requests + BeautifulSoup4 | 新闻抓取与解析 |
| SMTP_SSL | 安全邮件发送 |
| GitHub Actions | 自动化定时任务 |
| JSON | 数据存储 |
核心代码实现
1. 新闻抓取模块
# 从CCTV科技频道抓取新闻
def crawl_cctv_tech_news():
url = "https://news.cctv.com/tech/"
headers = {"User-Agent": "Mozilla/5.0..."}
response = requests.get(url, headers=headers, timeout=15)
soup = BeautifulSoup(response.text, "html.parser")
# 解析新闻链接和标题
news_items = []
for a in soup.find_all("a", href=True):
text = a.get_text(strip=True)
if text and len(text) > 5:
news_items.append((text, a["href"]))
return news_items[:10] # 返回最新10条新闻
2. 邮件发送模块
# 配置QQ邮箱发送(需要授权码)
smtp_server = "smtp.qq.com"
smtp_port = 465
smtp_user = "your_email@qq.com"
smtp_password = "your_authorization_code" # 不是QQ密码!
# 创建HTML邮件内容
def create_html_email(news_items, date):
html_content = f"""
<h2>📰 CCTV科技新闻摘要 ({date})</h2>
<div class="news-container">
"""
for title, link in news_items:
html_content += f"""
<div class="news-item">
<h3><a href="{link}">{title}</a></h3>
</div>
"""
html_content += "</div>"
return html_content
快速部署步骤
1. 本地环境配置
# 安装依赖
pip install requests beautifulsoup4
# 测试运行
python crawl_news.py
python send_email.py
2. GitHub Actions自动化部署
创建 .github/workflows/daily-news.yml:
name: 每日科技新闻
on:
schedule:
- cron: '0 2 * * *' # 每天UTC 02:00(中国10:00)
workflow_dispatch: # 支持手动触发
jobs:
send-news:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: 安装依赖
run: pip install requests beautifulsoup4
- name: 抓取并发送新闻
env:
SENDER_EMAIL: ${{ secrets.SENDER_EMAIL }}
SENDER_PASSWORD: ${{ secrets.SENDER_PASSWORD }}
RECEIVER_EMAIL: ${{ secrets.RECEIVER_EMAIL }}
run: |
python crawl_news.py
python send_email.py
3. 配置GitHub Secrets
在仓库Settings → Secrets中添加:
-
SENDER_EMAIL: 发件QQ邮箱 -
SENDER_PASSWORD: QQ邮箱授权码 -
RECEIVER_EMAIL: 收件邮箱 -
SMTP_SERVER: smtp.qq.com -
SMTP_PORT: 465
关键技术点
-
QQ邮箱授权码获取:在QQ邮箱设置→账户→POP3/SMTP服务中生成
-
SMTP_SSL连接:直接使用SSL加密,避免普通SMTP连接问题
-
GitHub Actions定时:利用免费额度实现每日自动运行
-
错误重试机制:网络请求失败时自动重试3次
项目优势
-
零成本:完全利用免费资源(GitHub Actions + QQ邮箱)
-
易维护:代码结构清晰,配置简单
-
可扩展:轻松添加其他新闻源(如36kr、虎嗅等)
-
即时性:每天固定时间推送,不错过重要科技动态
效果展示
项目生成的HTML邮件在电脑和手机端都有良好的显示效果,包含新闻标题、摘要和直达链接,方便快速阅读。

遇到的问题与解决方案
-
问题1:CCTV页面结构变化导致抓取失败
-
解决方案:增加多种解析方式,提高容错率
-
-
问题2:SMTP连接被拒绝
-
解决方案:使用SMTP_SSL并正确配置端口465
-
-
问题3:GitHub Actions时区问题
-
解决方案:设置环境变量TZ=Asia/Shanghai
-
总结
这个项目展示了如何用Python实现一个完整的自动化系统,涉及网络爬虫、数据处理、邮件发送和云平台部署。不仅实用性强,也是学习自动化开发的好案例。
只需一次配置,就能每天准时收到最新的科技新闻摘要,极大提高了信息获取效率。代码完全开源,可以根据需要自定义新闻源、发送频率和邮件模板。
详细教程和完整代码请参考原文:自动科技新闻摘要邮件机器人完整教程
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)