python/book_reader/功能说明.md

158 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小说阅读器功能说明
## 项目概述
本项目是一个基于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月*