自动抓取网页图片,智能比对基准图,归档更新变体,生成对比报告。
一个跨平台的自动化图床更新工具: 支持从网页(如微信公众号攻略贴)批量下载图片,与本地基准图片进行对比,识别重复图、变体图和未匹配图,并分类归档、生成 Markdown 报告 适用于维护图床、归档攻略图片,或配合 QQ 机器人图床使用
- 网页图片抓取:支持自定义 CSS 选择器筛选目标图片
- 多维度图像比对:结合感知哈希(aHash, pHash, dHash)与 ORB 特征匹配算法,提高识别准确率
- 自动归档:将匹配到的图片按基准图命名规则保存,未匹配的图会放入
unmatched文件夹 - 报告生成:输出 Markdown 对比报告,方便人工校验
- Python >= 3.8
- 依赖库见
requirements.txt
主要依赖:
requests(网页抓取)beautifulsoup4(HTML 解析)pillow(图像处理)imagehash(感知哈希)opencv-python(ORB 特征匹配)numpy(数值计算)
-
安装依赖:
pip install -r requirements.txt -
准备基准图片:
- 在项目根目录下新建 images/ 文件夹
- 将基准图放入其中(文件名即规范名,用于比对和重命名)
-
运行脚本:
python main.py -
输入网页信息
- URL(必填):目标网页或攻略贴地址
- CSS Selector(可空):例如
#js_content img留空则抓取页面上所有<img>
-
查看结果:
- 已匹配/变体图片:
archive/<网页标题>/ - 未匹配图片:
archive/<网页标题>/unmatched/ - 对比报告:
logs/
- 已匹配/变体图片:
ImageHostUpdater/
├── images/ # 基准图目录(必需)
├── archive/ # 抓取图归档目录
├── logs/ # 对比报告
├── main.py # 主程序入口
├── requirements.txt # 项目依赖
└── README.md
IMG_SELECTOR:CSS 选择器(可在运行时修改),为空则抓取全部<img>USE_ATTRS_IN_ORDER:抓取图片时的属性优先级,常用['data-src','data-original-src','src']SIM_THRESHOLD:ORB 相似度阈值(默认 0.8,取值范围 0.0-1.0,越高越严格)CANON_DIR:基准图片目录(默认 images/)ARCHIVE_DIR:归档目录(默认archive/)LOG_DIR:日志/报告目录(默认logs/)
- 粗筛:计算新图的 aHash / pHash / dHash,与
images/中每张基准图比对 - 精筛:选出距离最近的基准图,使用 ORB 特征点匹配,计算
good_matches / total_matches得分 - 判定:
- 若相似度 ≥ 阈值 → 视为匹配,归档到
archive/<title>/,命名与基准图一致(重复则_1/_2) - 若相似度 < 阈值 → 归档到
archive/<title>/unmatched/
- 若相似度 ≥ 阈值 → 视为匹配,归档到