番茄小说下载器实战指南:三分钟上手到多平台部署全解
2026/8/21 19:40:36 网站建设 项目流程

番茄小说下载器实战指南:三分钟上手到多平台部署全解

【免费下载链接】fanqienovel-downloader下载番茄小说项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader

断网追更白忙一场?fanqienovel-downloader(番茄小说下载器)就是干这个的:输入一个小说 id 或链接,整本书被抓到本地,还能转成 TXT、EPUB(一种通用电子书格式)等多种格式,离线随便读。

🚀 三分钟跑起来

想最快看到结果,直接跑 Web 版。三条命令的事:

# 克隆项目 git clone https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader cd fanqienovel-downloader
# 安装全部 Python 依赖 pip install -r requirements.txt
# 启动 Web 服务,浏览器打开 http://localhost:12930 cd src python server.py

打开网页后,粘贴小说 id 或目录链接就能下载,带进度条、支持排队批量下载,下完还能直接在网页里在线阅读。注意一点:v1.1.6 之前的版本因为接口失效已经用不了了,装最新版即可。

⚙️ 它是怎么干活的

整个项目就三块,分工很清晰:

  • 下载引擎src/main.py里的NovelDownloader类):管所有网络请求、HTML 解析、内容清洗
  • Web 服务src/server.py,Flask 框架):提供网页界面和 REST API,用 SocketIO 把下载进度实时推送到浏览器
  • 配置中心Config数据类):所有可调参数都收口在data/config.json,改文件不用改代码

下载一本完整书的主流程,大致是这五步:

  1. 拿章节列表:用小说 id 请求接口,得到书名和全部章节 id
  2. 并发抓正文:起线程池(默认 16 个线程)并行下载,每个请求之间加随机延迟、随机换 User-Agent(浏览器身份标识),降低被风控的概率
  3. 解析清洗:用 BeautifulSoup(一个 HTML 解析库)提取正文,再按src/charset.json里的映射表处理特殊字符
  4. 断点保护:每下完几章就写一次 JSON 中间文件到data/bookstore/,中断重跑时已下载的章节自动跳过
  5. 按模式出文件:根据save_mode生成整本 TXT、分章 TXT、EPUB、HTML 或 LaTeX,其中 EPUB 会带上封面、作者和目录

Cookie(网站登录凭证)失效时引擎会自动重新生成,不用手动干预。

🖥️ 多环境安装实战

三种常见环境各给一套命令,直接复制就能验证。

本地 Python 环境

前面"三分钟跑起来"已经覆盖。建议先建虚拟环境再装依赖:

# 创建并激活虚拟环境,再装依赖 python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install -r requirements.txt

Docker 容器

适合放在 NAS、云服务器上长期挂着用。项目自带 Dockerfile 和docker-compose.yml

# 构建镜像并在后台启动 docker compose up -d

启动后同样访问http://localhost:12930。配置和数据分别存进fanqie_datafanqie_downloads两个数据卷里,升级镜像不丢书。想换保存目录,改docker-compose.yml的 volumes 部分即可。

手机 Termux 环境

Android 手机上装 Termux(一个 Linux 终端环境),跑精简版src/ref_main.py就行。国内网络建议先换源:

# 更新并安装 Python 环境 pkg update && pkg install python pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install requests ebooklib tqdm beautifulsoup4

lxml 在手机上编译经常报错,按下面顺序处理:

# 解决 lxml 编译失败 apt install clang libxml2 libxslt CFLAGS="-O0" pip install lxml

然后python ref_main.py开跑。

🎛️ 关键参数与调优

所有参数集中在data/config.json(定义在src/main.pyConfig类里),核心就这几个:

参数含义默认值
save_mode保存模式:1 整本 TXT、2 分章 TXT、3 EPUB、4 HTML、5 LaTeX1
xc并发下载线程数16
delay每次请求的随机延迟范围,单位毫秒[50, 150]
kg/kgf段落首行缩进的字符数 / 用什么字符缩进0 / 全角空格
space_mode空格处理:halfwidth 半角 / fullwidth 全角halfwidth
save_path下载文件的保存目录项目内 novel_downloads

调优的本质是在"速度"和"稳定性"之间找平衡,按你的网络环境取个值:

网络环境xc建议delay建议
家庭宽带8~12[50, 150]
企业/机房网络16~24[30, 100]
手机热点4~8[100, 300]

被限流了就往大调delay、往小调xc,别硬刚。另外注意:改配置里的任何选项都会覆盖原值,改砸了直接把config.json删掉重建默认配置。

🛠️ 常见坑与自救

坑一:报ProxyError: Unable to connect to proxy

  • 现象:下载一开始就抛代理连接异常
  • 原因:系统环境变量里残留了失效的代理地址
  • 解决:清掉代理再跑
# 清除代理环境变量后重试 unset http_proxy https_proxy python src/server.py

坑二:pip install lxml编译失败

  • 现象:一堆 C 编译器报错
  • 原因:lxml 含 C 扩展,部分系统缺编译工具
  • 解决:本地用CFLAGS="-O0" pip install lxml;Termux 上按前面"手机环境"一节装 clang 和 libxml2

坑三:章节反复下载失败、内容返回空

  • 现象:进度条走完但文件里缺章
  • 原因:cookie 失效或平台接口变更
  • 解决:先删data/cookie.json让程序重新生成;还不行就升级到 v1.1.6 以上版本(旧版接口已死)

坑四:下载下来的中文乱码

  • 现象:用某些工具打开 TXT 出现方块字
  • 原因:文件本身是 UTF-8,读它的工具选错了编码
  • 解决:用支持 UTF-8 的编辑器打开,或在代码里显式指定encoding='utf-8'

🔧 进阶玩法与二次集成

Web 版暴露了一组 REST 接口,脚本化批量操作很方便,常用的几个在src/server.py里能直接查到:

# 用一行代码把某本书塞进下载队列 import requests requests.post("http://localhost:12930/api/queue/add/7143038691944959011")

/api/search可以按关键词搜书,/api/queue/status查队列进度,串起来就是一个自己的"追更机器人"。

想加新格式?扩展点也很直白:src/main.py顶部的SaveMode枚举加一个成员,照着_save_single_txt的写法实现一个保存函数,再在保存分支里接上它就行。整条链路(下章 → 清洗 → 落盘)都是现成的,你只需要管最后一步。

⚖️ 使用红线与社区

说几句不好听但重要的:

  • 这东西定位是学习和研究工具,下载内容仅限个人阅读,别商用、别二次传播
  • 控制频率和并发,别把人家服务器打挂,且用且珍惜
  • 项目是 AGPL-3.0 协议,改代码分发时请遵守协议要求

遇到问题先翻一遍 Issue 区,很多坑前人都踩过。有想法就提 Issue 或直接提 PR,作者对能复现的问题回复挺快的。

最后

  • 新手:装好依赖跑起 Web 版,粘贴 id 下载,格式选 EPUB 就够用了
  • 技术向:从NovelDownloader读起,把delayxc当实验变量玩,顺手用 API 写个自动追更脚本
  • 团队用户:Docker 部署到一台常开的机器上,数据卷挂好,当个私人的书库存档站

现在就去把书架上最想带走的那本书,下载下来吧。

【免费下载链接】fanqienovel-downloader下载番茄小说项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询