本项目开发了一套自动化系统,能高效抓取社交媒体热点并结构化可视化处理后推送至Kindle,简化用户获取时事信息的流程。
一、项目简介 #
本项目旨在开发一套自动化信息处理系统,能够从主流社交媒体平台(如知乎、微博)自动抓取时事热点数据,并在处理与可视化后,通过电子邮件推送到用户指定的智能阅读设备(如 Kindle)。 该系统旨在简化用户获取和阅读热点资讯的流程,减少手动操作,从而显著提升信息获取的效率与便捷性。 通过将热点信息以结构化、可视化形式呈现,用户可更直观、高效地把握舆情动态。
二、图形界面展示(Tkinter 实现) #
项目结构如下:
📁 项目文件夹
├── kindle_ui.py # 图形界面及推送功能
├── smtp.py # 邮件发送模块
├── hot_spider.py # 爬虫 + 数据处理 + 数据库模块
├── ZhihuHot.csv / txt # 知乎热榜数据
├── WeiboHot.csv / txt # 微博热榜数据
三、项目亮点 #
1、一键推送内容到 Kindle #
无需手动下载 txt 文件,通过 GUI 填写邮箱后点击“发送”,即可自动推送热搜榜内容到你的 Kindle 设备。
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-Agent与Cookie模拟浏览器行为,绕过反爬机制。 - 利用
BeautifulSoup解析 HTML,根据 CSS 选择器(如.HotList-itemTitle,.HotList-itemMetrics)提取标题与热度。 - 对于微博热搜,采用
re.findall正则表达式匹配文本信息。
数据输出:
- 临时存储于 Python 列表中;
- 存入 MySQL 数据库;
- 导出为
.csv与.txt格式文件。
2、 数据处理与存储模块 #
数据库交互:
- 使用
PyMySQL连接本地 MySQL 数据库; - 配置信息(主机、端口、用户、密码、数据库名)在代码中设定;
- 自动创建两个数据表:
zhihuhot:存储知乎热搜;weibohot:存储微博热搜;
- 字段包括:ID(自增)、标题、热度、正文等;
- 使用
cursor.executemany实现批量插入,提高性能。
数据导出:
- 利用
pandas将数据转换为DataFrame; - 导出为
ZhihuHot.csv和WeiboHot.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 安全连接; - 基于用户提供的邮箱和授权码进行身份验证。