Yandere-crawler
Yandere-crawler copied to clipboard
yande.re图片爬虫
Yande.re图片爬虫
前言
手动刷图费时费力,至少我是这么想的。于是就有了这个项目~~及后续更新~~。
当前版本的原型基于Win10, Python 3.10.7
开发,在Win10, Python 3.11.6
完成最后更新。由于并行实现从线程改为协程,最低Python
版本需求提高到3.9
,但不确定低版本是否具有使用到的特性。
功能
- 支持从指定的开始页码爬取到结束页码
- 也支持从第一页爬取到上一次开始爬取的位置
- 支持设置爬取的图片类型(全部、横图、竖图、正方形)
- 支持最大或最小图片尺寸、宽高比限制
- 支持限制爬取的图片体积
- 按照当天的日期创建目录并存放爬取的图片
- 爬取结束后会在图片目录下生成日志文件
- 支持tag搜索与排除
- 支持按提供的id下载pool包含的所有post
- (失效)~~GUI~~
如何使用
配置文件
config.json
是完整的配置文件,包含所有设置项:
-
start_page
: 起始页码 -
end_page
: 结束页码 -
folder_path
: 输出文件夹路径,如文件夹不存在将会自动创建。路径必须以斜杠结尾。可接受的分隔符只有/
或\\
,\
将被认为是转义字符而报错。 -
date_separate
: 是否按当天日期创建子文件夹,启用tag搜索时无效 -
tag_search
: 是否启用tag搜索,不检查tags是否有效。会按给定的tags串创建子文件夹,但不会包含被丢弃的tags信息。 -
tags
: 要搜索的tags,多个tag应以空格分隔 -
discard_tags
: 要排除的tags,多个tags应以空格分隔 -
thread_count
: 并行下载线程数,非并行分段下载。在低内存设备或低网络带宽设备上不建议设为较高值,网络条件极好的环境也不建议设为较高值。 - ~~
random_delay
: 未启用~~ -
last_stop_id
和tagSearch_stop_id
: 上次运行的最后终止id。运行在按页抓取模式且开始页码不大于1时只会记录最大值,设置了更大的开始页码或运行在tag搜索下会记录最新值,运行在pool下载模式时不会覆写。 -
filter
: 图像过滤器:-
ratio
: 按最大压缩的预览图的宽高比例筛选图片,较粗略。如果需要精确筛选,应使用pixel_limit
过滤。可选项:-
all
: 不筛选 -
horizontal
: 宽>高 -
vertical
: 宽<高 -
square
: 宽=高
-
-
pixel_limit
: 按像素筛选。可筛选项:最小宽度、最小高度、最小宽高比,最大宽度、最大高度、最大宽高比 -
file_limit
: 按体积筛选,单位为byte,大于0时有效 -
pic_type
: 按压缩率筛选。可选项:-
origin
: 原图 -
forcepng
: 由于部分post的原图即为jpeg格式的压缩图片,开启此项将强制过滤掉所有原图格式不为png的post -
jpeg
: jpeg格式的原尺寸压缩图片 -
sample
: 长和宽均不超过1500像素的压缩图片 -
preview
: 长和宽均不超过300像素的预览图
-
-
safe_mode
: 过滤explict
分级内容。~~真的会有人用吗~~ -
rating_check
和rating
: 更细致的分级过滤器 -
status_check
: 按网站提供的状态标记排除部分post
-
Windows下命令行执行python index.py
,Linux下可直接执行。
命令行参数
命令行选项不能修改所有的参数,但通过命令行提供参数是唯一可根据提供的id下载pool的方法。当前可用的选项如下:
-
-s
或--start
: 起始页码 -
-e
或--end
: 结束页码 -
-o
或--output_folder
: 输出文件夹路径,注意事项同前所述。 -
-t
或--threads
: 并行下载线程数,注意事项同前所述。 -
-l
或--log
: 日志等级 -
--pool_id
: 按pool下载post,如果指定pool id,则忽略除输出文件夹和下载线程数外的所有其他参数 -
--ratio
: 图片比例,可选项:all
,horizontal
,vertical
,square
如果需要按id下载pool,命令行写法如下:python index.py --pool_id=98680
注意事项
- 需要aiohttp和aiofiles两个库
- 非pool下载模式下,每次运行后
config.json
中last_stop_id
参数会被自动修改为爬取到的第一张图片的ID,便于下一次爬取时只爬取新post,无论停止条件为ID或是页码。 - 通过命令行提供的参数会覆盖配置文件中的值
更新日志
3.0.1
新增:可选图片压缩率
3.0
新增:按pool id
下载整个pool,命令行参数
优化:将并行实现从线程转换为协程,优化数据处理逻辑
2.2
优化:改用内置logging库记录日志
2.1
解决tags发生变化后文件重复下载的问题并作出一些改进
2.0
新增:tag搜索,图形界面~~与并行下载~~
1.0
终于完成了啦