本项目封装了一套可用于爬取JM的Python API.
你可以通过简单的几行Python代码,实现下载JM上的本子到本地,并且是处理好的图片。
友情提示:珍爱JM,为了减轻JM的服务器压力,请不要一次性爬取太多本子,西门🙏🙏🙏.
本项目的核心功能是下载本子,基于此,设计了一套方便使用、便于扩展,能满足一些特殊下载需求的框架。
目前核心功能实现较为稳定,项目也处于维护阶段。
除了下载功能以外,也实现了其他的一些禁漫接口,按需实现,具体如下。
- 登录
- 搜本
- 分类 (排行榜)
- 本子章节详情
- 图片下载解码
- 收藏夹
- 移动端接口加解密
-
通过pip官方源安装(推荐,并且更新也是这个命令)
pip install jmcomic -i https://pypi.org/project -U
-
通过源代码安装
pip install git+https://github.com/hect0x7/JMComic-Crawler-Python
使用下面的两行代码,即可实现功能:把某个本子(album)里的所有章节(photo)下载到本地
import jmcomic # 导入此模块,需要先安装.
jmcomic.download_album('422866') # 传入要下载的album的id,即可下载整个album到本地.
- v2.2.9: 新增命令行调用方式,上述的代码可以转为一行命令
# 下载album_id为422866的本子
$ jmcomic 422866
进阶使用可以参考:jmcomic常用类和方法演示
下面列出的是一些常用的文档:
-
绕过Cloudflare的反爬虫
-
实现禁漫APP接口最新的加解密算法 (1.6.3)
-
用法多样:
- GitHub Actions:网页上直接输入本子id就能下载(教程:使用GitHub Actions下载禁漫本子)
- 命令行:无需写Python代码,简单易用(教程:使用命令行下载禁漫本子)
- Python代码:最本质、最强大的使用方式,需要你有一定的python编程基础
-
支持网页端和移动端两种客户端实现,可通过配置切换(移动端不限ip兼容性好,网页端限制ip地区但效率高)
-
支持自动重试和域名切换机制
-
多线程下载(可细化到一图一线程,效率极高)
-
可配置性强
- 不配置也能使用,十分方便
- 配置可以从配置文件生成,支持多种文件格式
- 配置点有:
请求域名
客户端实现
是否使用磁盘缓存
同时下载的章节/图片数量
图片格式转换
下载路径规则
请求元信息(headers,cookies,proxies)
等
-
可扩展性强
- 支持自定义本子/章节/图片下载前后的回调函数
- 支持自定义类:
Downloader(负责调度)
Option(负责配置)
Client(负责请求)
实体类
等 - 支持自定义日志、异常监听器
- 支持Plugin插件,可以方便地扩展功能,以及使用别人的插件,目前内置插件有:
登录插件
硬件占用监控插件
只下载新章插件
压缩文件插件
下载特定后缀图片插件
发送QQ邮件插件
日志主题过滤插件
自动使用浏览器cookies插件
jpg图片合成为一个pdf插件
导出收藏夹为csv文件插件
- Python >= 3.7
- 个人项目,文档和示例会有不及时之处,可以Issue提问
-
.github:GitHub Actions配置文件
-
assets:存放一些非代码的资源文件
- docs:项目文档
- option:存放配置文件
-
src:存放源代码
- jmcomic:
jmcomic
模块
- jmcomic:
-
tests:测试目录,存放测试代码,使用unittest
-
usage:用法目录,存放示例/使用代码