4.3 KiB
4.3 KiB
小说阅读器功能说明
项目概述
本项目是一个基于Python Tkinter的小说阅读器应用,支持从指定网址爬取小说内容并生成PDF文件,同时提供PDF阅读功能。
实现功能
1. 小说爬取功能
- 网址输入:支持输入小说章节列表页网址
- 章节解析:自动解析网页中的章节列表
- 多线程爬取:使用ThreadPoolExecutor并发爬取章节内容,提高速度
- 内容清理:自动过滤广告内容和无关文本
2. PDF生成功能
- 中文支持:使用宋体字体确保中文正常显示
- 书签生成:自动为每个章节添加PDF书签
- 页面布局:合理的页边距和行距设置
- 页码显示:每页底部显示页码和书名
3. PDF阅读功能
- 内容显示:使用PyMuPDF渲染PDF页面
- 书签导航:左侧显示PDF书签,点击可跳转到对应页面
- 左右分栏布局:书签和内容并排显示
- 可调整大小:支持拖动分隔线调整左右面板比例
- 滚动浏览:支持鼠标滚轮和滚动条浏览内容
4. 文本阅读模式
- 章节列表:左侧显示所有章节标题
- 内容显示:右侧显示章节文本内容
- 章节切换:点击章节列表切换章节
5. 搜索小说功能
- 关键词搜索:输入小说名称进行搜索
- 结果展示:显示搜索结果列表
- 一键选择:选择结果自动填充网址和名称
技术实现
核心技术栈
| 模块 | 技术 | 说明 |
|---|---|---|
| GUI框架 | Tkinter | Python内置图形界面库 |
| 网络请求 | requests | HTTP请求库 |
| HTML解析 | BeautifulSoup | HTML解析库 |
| PDF生成 | ReportLab | PDF生成库 |
| PDF处理 | PyMuPDF (fitz) | PDF读取和书签处理 |
| 多线程 | concurrent.futures | 并发爬取支持 |
关键特性
- 多线程爬取:最多10个线程同时爬取,大幅提升速度
- 连接池优化:使用HTTPAdapter设置连接池,减少连接开销
- 状态管理:支持爬取过程中的状态监控和停止操作
- 异常处理:完善的异常捕获和错误提示
依赖与安装
依赖库列表
| 库名称 | 版本 | 用途 |
|---|---|---|
| requests | >=2.31.0 | HTTP网络请求 |
| beautifulsoup4 | >=4.12.0 | HTML解析 |
| reportlab | >=4.0.0 | PDF生成 |
| pymupdf | >=1.23.0 | PDF读取和渲染 |
| pypdf | >=4.0.0 | PDF书签处理 |
| lxml | >=5.1.0 | HTML解析支持 |
安装方法
方法一:使用pip逐一安装
pip install requests
pip install beautifulsoup4
pip install reportlab
pip install pymupdf
pip install pypdf
pip install lxml
方法二:使用requirements.txt
创建 requirements.txt 文件,内容如下:
requests>=2.31.0
beautifulsoup4>=4.12.0
reportlab>=4.0.0
pymupdf>=1.23.0
pypdf>=4.0.0
lxml>=5.1.0
然后执行安装:
pip install -r requirements.txt
验证安装
安装完成后,可以通过以下命令验证:
python -c "import requests; import bs4; import reportlab; import fitz; import pypdf; print('所有依赖安装成功')"
注意事项
- ReportLab字体:如果生成PDF时中文显示为方框,需要确保系统中有宋体字体
- PyMuPDF版本:建议使用最新版本以获得更好的兼容性
- 网络环境:爬取功能需要网络连接,部分网站可能需要代理
使用说明
爬取小说
- 在"网址"输入框中输入小说章节列表页网址
- 在"小说名称"输入框中输入小说名称
- 点击"开始爬取"按钮
- 等待爬取完成,自动生成PDF文件
阅读PDF
- 点击"打开PDF"按钮选择PDF文件
- 左侧显示书签列表(如有)
- 点击书签跳转到对应页面
- 拖动中间分隔线调整左右面板大小
切换阅读模式
- 文本阅读:查看爬取的文本内容
- PDF阅读:查看生成的PDF文件
输出文件
爬取完成后,PDF文件保存在项目目录下的 download 文件夹中,文件名与输入的小说名称一致。
注意事项
- 爬取速度受网络状况和目标网站限制
- 建议使用合法合规的小说网站进行爬取
- PDF生成需要安装ReportLab库
- PDF书签功能需要安装PyPDF库
项目版本:1.0 最后更新:2026年4月