158 lines
4.3 KiB
Markdown
158 lines
4.3 KiB
Markdown
# 小说阅读器功能说明
|
||
|
||
## 项目概述
|
||
|
||
本项目是一个基于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 | 并发爬取支持 |
|
||
|
||
### 关键特性
|
||
|
||
1. **多线程爬取**:最多10个线程同时爬取,大幅提升速度
|
||
2. **连接池优化**:使用HTTPAdapter设置连接池,减少连接开销
|
||
3. **状态管理**:支持爬取过程中的状态监控和停止操作
|
||
4. **异常处理**:完善的异常捕获和错误提示
|
||
|
||
## 依赖与安装
|
||
|
||
### 依赖库列表
|
||
|
||
| 库名称 | 版本 | 用途 |
|
||
|--------|------|------|
|
||
| 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逐一安装
|
||
|
||
```bash
|
||
pip install requests
|
||
pip install beautifulsoup4
|
||
pip install reportlab
|
||
pip install pymupdf
|
||
pip install pypdf
|
||
pip install lxml
|
||
```
|
||
|
||
#### 方法二:使用requirements.txt
|
||
|
||
创建 `requirements.txt` 文件,内容如下:
|
||
|
||
```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
|
||
```
|
||
|
||
然后执行安装:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 验证安装
|
||
|
||
安装完成后,可以通过以下命令验证:
|
||
|
||
```bash
|
||
python -c "import requests; import bs4; import reportlab; import fitz; import pypdf; print('所有依赖安装成功')"
|
||
```
|
||
|
||
### 注意事项
|
||
|
||
1. **ReportLab字体**:如果生成PDF时中文显示为方框,需要确保系统中有宋体字体
|
||
2. **PyMuPDF版本**:建议使用最新版本以获得更好的兼容性
|
||
3. **网络环境**:爬取功能需要网络连接,部分网站可能需要代理
|
||
|
||
## 使用说明
|
||
|
||
### 爬取小说
|
||
|
||
1. 在"网址"输入框中输入小说章节列表页网址
|
||
2. 在"小说名称"输入框中输入小说名称
|
||
3. 点击"开始爬取"按钮
|
||
4. 等待爬取完成,自动生成PDF文件
|
||
|
||
### 阅读PDF
|
||
|
||
1. 点击"打开PDF"按钮选择PDF文件
|
||
2. 左侧显示书签列表(如有)
|
||
3. 点击书签跳转到对应页面
|
||
4. 拖动中间分隔线调整左右面板大小
|
||
|
||
### 切换阅读模式
|
||
|
||
- **文本阅读**:查看爬取的文本内容
|
||
- **PDF阅读**:查看生成的PDF文件
|
||
|
||
## 输出文件
|
||
|
||
爬取完成后,PDF文件保存在项目目录下的 `download` 文件夹中,文件名与输入的小说名称一致。
|
||
|
||
## 注意事项
|
||
|
||
1. 爬取速度受网络状况和目标网站限制
|
||
2. 建议使用合法合规的小说网站进行爬取
|
||
3. PDF生成需要安装ReportLab库
|
||
4. PDF书签功能需要安装PyPDF库
|
||
|
||
---
|
||
|
||
*项目版本:1.0*
|
||
*最后更新:2026年4月*
|