Skip to main content

【软件著作权】时事热点可视化邮箱推送系统

·1626 words·4 mins
赵一鸣
Author
赵一鸣
感谢所有成为自己✨
Table of Contents

本项目开发了一套自动化系统,能高效抓取社交媒体热点并结构化可视化处理后推送至Kindle,简化用户获取时事信息的流程。

一、项目简介
#

本项目旨在开发一套自动化信息处理系统,能够从主流社交媒体平台(如知乎、微博)自动抓取时事热点数据,并在处理与可视化后,通过电子邮件推送到用户指定的智能阅读设备(如 Kindle)。 该系统旨在简化用户获取和阅读热点资讯的流程,减少手动操作,从而显著提升信息获取的效率与便捷性。 通过将热点信息以结构化、可视化形式呈现,用户可更直观、高效地把握舆情动态。

二、图形界面展示(Tkinter 实现)
#

alt text alt text alt text

alt text

alt text

alt text

项目结构如下:

📁 项目文件夹
├── kindle_ui.py        # 图形界面及推送功能
├── smtp.py             # 邮件发送模块
├── hot_spider.py       # 爬虫 + 数据处理 + 数据库模块
├── ZhihuHot.csv / txt  # 知乎热榜数据
├── WeiboHot.csv / txt  # 微博热榜数据

三、项目亮点
#

1、一键推送内容到 Kindle
#

无需手动下载 txt 文件,通过 GUI 填写邮箱后点击“发送”,即可自动推送热搜榜内容到你的 Kindle 设备。

alt text

2、用 Python 构建完整系统
#

本项目综合使用:

  • requests, re, bs4:爬虫模块;
  • pymysql, pandas:数据入库、导出 csv/txt;
  • smtplib, email.mime:邮件推送;
  • tkinter:图形界面编程;
  • pinyin:对中文文件名转拼音(Kindle 更好识别)。

本系统主要面向以下三类用户群体:

  • 时事分析师:需快速获取、分析最新热点用于研究。
  • 媒体从业者:需实时掌握社会热搜,为新闻报道与内容创作提供素材。
  • 普通用户:希望借助 Kindle 等设备便捷阅读热点信息的个人用户。

四、爬虫部分:知乎和微博热榜
#

1、知乎热榜
#

抓取内容包括:

  • 热榜标题
  • 热度值
  • 正文摘要

使用了 BeautifulSoup 和正则表达式处理 JSON 结构。

url = 'https://www.zhihu.com/billboard'
html = requests.get(url, headers=headers)
soup = BeautifulSoup(html.text, 'lxml')
titles = soup.select('.HotList-itemTitle')

2、微博热榜
#

使用正则表达式直接从 HTML 抓取榜单文本数据。

url = "https://s.weibo.com/top/summary?cate=realtimehot"
text = re.findall('<td\s+class="td-02">.*?>(.*?)<.*?</td>', response, re.DOTALL)

3、数据存储与导出
#

所有热搜内容都支持存入本地 MySQL 数据库。

  • 知乎存入表 zhihuhot
  • 微博存入表 weibohot

并支持导出为 ZhihuHot.txt, WeiboHot.txt,支持 UTF-8 编码,Kindle 完美显示。

CREATE TABLE zhihuhot (
  ID INT PRIMARY KEY AUTO_INCREMENT,
  TITLE CHAR(250),
  HOT CHAR(10),
  TEXT CHAR(250)
);

4、邮件推送功能实现(smtp.py)
#

支持 QQ邮箱 / 163邮箱 / Gmail 推送,校验邮箱合法性后自动发送附件。

smtpObj = smtplib.SMTP_SSL(mail_host, 465)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(mail_user, [receiver], message.as_string())

发送前自动判断文件大小(不得超过 50MB),并将中文书名转拼音以保证 Kindle 正确识别。

五、核心功能模块详解
#

1、 数据爬取模块(爬虫.py
#

爬取目标:实时获取知乎热榜与微博热搜数据。

技术实现

  • 使用 requests 库发送 HTTP 请求,通过设置 User-AgentCookie 模拟浏览器行为,绕过反爬机制。
  • 利用 BeautifulSoup 解析 HTML,根据 CSS 选择器(如 .HotList-itemTitle, .HotList-itemMetrics)提取标题与热度。
  • 对于微博热搜,采用 re.findall 正则表达式匹配文本信息。

数据输出

  • 临时存储于 Python 列表中;
  • 存入 MySQL 数据库;
  • 导出为 .csv.txt 格式文件。

2、 数据处理与存储模块
#

数据库交互

  • 使用 PyMySQL 连接本地 MySQL 数据库;
  • 配置信息(主机、端口、用户、密码、数据库名)在代码中设定;
  • 自动创建两个数据表:
    • zhihuhot:存储知乎热搜;
    • weibohot:存储微博热搜;
  • 字段包括:ID(自增)、标题、热度、正文等;
  • 使用 cursor.executemany 实现批量插入,提高性能。

数据导出

  • 利用 pandas 将数据转换为 DataFrame
  • 导出为 ZhihuHot.csvWeiboHot.csv
  • 同步生成格式良好的 .txt 文件,提升阅读友好性。

3、用户界面模块(ui.py
#

技术框架:基于 Python 内置 Tkinter 库开发 GUI,无需额外依赖。

界面布局与功能

  • 信息输入区

    • 输入发送邮箱、接收邮箱(Kindle)、邮箱授权码;
    • 密码输入框默认为星号隐藏,提供“显示密码”选项。
  • 文件选择区

    • 提供文件选择按钮,支持 .mobi.txt.pdf 格式;
    • 显示已选文件路径。
  • 操作按钮区

    • 校验按钮:检测邮箱格式(需以 @kindle.com@kindle.cn 结尾);
    • 发送按钮:执行邮件推送;
    • 取消按钮:关闭程序。
  • 说明区域:展示使用提示,引导正确操作。


4、 邮件推送模块(smtp.py
#

邮件构建

  • 使用 email.mime 构建包含正文与附件的多部分 MIME 邮件;
  • 主题、发件人、收件人支持动态设置。

安全发送

  • 使用 smtplib.SMTP_SSL 建立与 SMTP 服务器(如 QQ 邮箱)的 SSL 安全连接;
  • 基于用户提供的邮箱和授权码进行身份验证。