为内容创作爬取 4K 高清配图。支持多个图片来源,按优先级自动切换。
优先级:百度图片搜索(主) → Wallhaven(备) → Unsplash(备)
| 预设 | 横图 (landscape) | 竖图 (portrait) | 方图 (square) | 备注 |
|------|----------------|----------------|--------------|------|
| 1080p | 1920×1080 | 1080×1920 | 1080×1080 | 入门级 |
| 1080+ | 2560×1440 | 1440×2560 | 1440×1440 | 强化爬取(&z=7) |
| 1.5K | 2250×1266 | 1266×2250 | 1500×1500 | 中端 |
| 2K | 2560×1440 | 1440×2560 | 2000×2000 | 2K 级别 |
| 4K | 3840×2160 | 2160×3840 | 3840×3840 | 高清(默认) |
| 8K | 7680×4320 | 4320×7680 | 7680×7680 | 超高清 |
> 1080+ 会强制加 &z=7 参数,告诉百度优先返回近期高质量图片,爬取效果显著优于普通模式。
> 重要:脚本默认输出到当前工作目录下的 image-scraper-downloads/ 文件夹。
> 可用 --output 自定义路径(支持绝对路径和相对路径)。
# 默认(当前工作目录/image-scraper-downloads/)
python3 scripts/baidu_image_scraper_v8.py --keyword "JK少女" --count 100
# 自定义输出目录
python3 scripts/baidu_image_scraper_v8.py --keyword "JK少女" --count 100 --output ./my-images/
> 图源最丰富,包含 B站、得物、大众点评、爱奇艺等高质量 CDN 内容,竖图可达 4K+,横图可达 5K+
缺点:需要浏览器渲染提取图片 URL,无法直接 curl
# ── 单关键词爬取(最常用)────────────────────────
# 目标自动 × 1.2,内部 buffer;关键词不够自动换备用词;下载完自动去重+删低质量
# 默认输出到 ./image-scraper-downloads/
python3 scripts/baidu_image_scraper_v8.py --keyword "JK少女" --count 100
python3 scripts/baidu_image_scraper_v8.py --keyword "JK少女" --count 200 --output ./my-images --z 7 --scroll 20
python3 scripts/baidu_image_scraper_v8.py --keyword "JK少女" --count 100 --ratio portrait --z 7
python3 scripts/baidu_image_scraper_v8.py --keyword "4K风景" --count 50 --ratio landscape
# ── 多关键词补充爬取 ─────────────────────────────
# 自动换关键词,直到达到目标数量
python3 scripts/baidu_image_scraper_v8.py --keywords "JK制服 少女" "JK 高清美女" "日本JK制服" --count 500 --output ~/photos
# ── 从已有链接文件下载 ─────────────────────────────
python3 scripts/baidu_image_scraper_v8.py --from-file links.json --output output --count 100
# ── 清理(手动)─────────────────────────────────
python3 scripts/baidu_image_scraper_v8.py --clean --output ~/photos
前置要求:agent-browser 命令可用(WorkBuddy 内置)
v8 核心改进(重构版):
| 改进 | 说明 |
|------|------|
| 移除 hover | 百度新版不再生成 tn=download 链接,hover 逻辑已废弃 |
| 直接提取 objurl | 从 .img-cell-w6C5O 的 data-show-ext 属性直接提取原图 URL |
| 更快更稳定 | 无需等待 hover 触发,数据已在 DOM 中 |
| 全图源支持 | 支持抖音、B站、得物等所有来源的原图下载 |
| 原子计数器 | AtomicCounter 类,线程安全的文件名生成 |
| 实时进度 | 每 20 张打印一次进度 |
| 哈希去重 | 下载前 MD5 校验,避免重复下载 |
| 分批下载 | 100 张/批,边提取边下载 |
| 自动后处理 | MD5去重 → 删除低质量图 → 重命名编号 |
技术流程(v8 新方案):打开搜索页 → 最大化窗口 → 等待图片网格渲染 → 滚动加载 → 直接从 .img-cell-w6C5O 的 data-show-ext 属性提取 objurl(原图URL)→ 立即并发下载每一批 → MD5 哈希去重
> 核心原则:直接下载 objurl(原图 URL)
> objurl 是百度图片搜索结果中的原图地址,包含在 data-show-ext JSON 属性中。
> 抖音等来源的 objurl 可以直接下载(经过百度 CDN 缓存)。
| 项目 | 说明 |
|------|------|
| 数据位置 | .img-cell-w6C5O 元素的 data-show-ext 属性(JSON 格式) |
| 原图 URL | data-show-ext.objurl |
| 其他字段 | url(缩略图)、title(标题)、cs、setsign |
| 抖音图片 | 直接使用 objurl 下载,无需特殊处理 |
| JS 引号 | 提取 JSON 属性时自动解析 |
| 浏览器窗口 | 每次打开后最大化 |
| 链接来源 | miaobi-lite.cdn.bcebos.com(百度 CDN)、douyinpic.com 等 |
| 排名 | 来源 | 典型分辨率 | 质量 | 备注 |
|------|------|-----------|------|------|
| 🥇 | p1.meituan.net(美团CDN) | 4480×6720 | 极高 3MB+ | 来源极丰富 |
| 🥈 | q1.itc.cn / q8.itc.cn(爱奇艺CDN) | 3000×4000 | 高 | 竖图横图均有 |
| 🥉 | b0.bdstatic.com(百度CDN) | 2000×2667 | 高 | 竖图来源多 |
| 4 | pic.rmb.bdstatic.com(贴吧/百科CDN) | 1080×1621 | 高 | 稳定,直链 |
| 5 | image-cdn.poizon.com(得物CDN) | 1280×1920 | 高 | 稳定 |
| 6 | dpfile.com(大众点评CDN) | 1440×1920 | 高 | 竖图方图均有 |
| 7 | photo.tuchong.com(图虫摄影) | 1080×1620 | 中高 | 真实摄影风格 |
| 排名 | 来源 | 典型分辨率 | 质量 | 备注 |
|------|------|-----------|------|------|
| 🥇 | q4.itc.cn(爱奇艺CDN) | 5307×4009 | 极高 | 最佳横图来源 |
| 🥈 | 5b0988e595225.cdn.sohucs.com(搜狐CDN) | 3500×2214 | 高 | 质量极高 |
| 🥉 | b0.bdstatic.com(百度CDN) | 2560×1440 | 高 | 横图约2000px |
| 4 | i0.hdslb.com / i1.hdslb.com(B站CDN) | 2560×1440 | 高 | 稳定 |
| 5 | dpfile.com(大众点评CDN) | 3070×2048 | 高 | |
| 来源 | 原因 |
|------|------|
| douyinpic.com(抖音) | ✅ 可以下载! v8 新方案直接提取 objurl 下载,无需百度代理。objurl 指向 miaobi-lite.cdn.bcebos.com(百度 CDN 缓存),可直接访问。 |
| sinaimg.cn(新浪微博) | 需正确 Referer,直接curl被拦截 |
| iknow-pic.cdn.bcebos.com(百度百科) | 需百度 Referer,外部无法访问 |
| gimg2.baidu.com(百度搜索图) | 同上,需百度 Referer |
| nimg.ws.126.net(网易云音乐) | Referer限制,下载返回0字节 |
| p3-tt.byteimg.com(字节/头条) | 需今日头条/抖音 Referer |
--keywords 多关键词模式,自动切换关键词补充到目标数量
--ratio portrait:更容易找到 4K+ 内容
--z 7:百度优先返回近期高质量图片
'a[href=down]',双引号 "a[href=down]" 会被 PowerShell 截断命令
> 纯 API 调用,无需浏览器。竖版图片多,分辨率普遍 3500x5250 ~ 4096x4096
https://wallhaven.cc/api/v1/search?q=关键词&categories=111&purity=100&topRange=1M&page=1
| 参数 | 值 | 说明 |
|------|-----|------|
| q | 搜索词 | jk, school girl, portrait 等 |
| categories | 111 | 人物分类 |
| purity | 100 | 清除 NSFW |
| topRange | 1M | 最近一个月最热门 |
| page | 1 | 分页 |
jk, jk portrait, jk school, portrait photography, candid portrait
> 真实摄影风格为主,原图可达 4000-9500px
# 下载原图(关键:加 ?q=100&fm=jpg&raw=1)
curl -s -o output.jpg "https://images.unsplash.com/photo-xxx?q=100&fm=jpg&raw=1"
配图优先级:百度图片搜索(主) → Wallhaven(备) → Unsplash(备)
配图规范写作模板:
> 配图从百度图片搜索爬取高清图(详见本 skill),严禁AI生成图片。
>
> 百度图片(v8 重构版):
> - 单关键词:python scripts/baidu_image_scraper_v8.py --keyword "关键词" --count 数量
> - 多关键词:python scripts/baidu_image_scraper_v8.py --keywords "词1" "词2" --count 数量 --output "目录"
> - 竖图:加 --ratio portrait --z 7
> - 横图:加 --ratio landscape --z 7
> - 清理去重:python scripts/baidu_image_scraper_v8.py --clean --output "目录"
>
> 从已有链接文件下载:python scripts/baidu_image_scraper_v8.py --from-file links.json --output "目录" --count 数量
>
> 百度不够时用 Wallhaven:wallhaven.cc/api/v1/search?q=关键词&categories=111&purity=100
>
> 再不够用 Unsplash:下载时加 ?q=100&fm=jpg&raw=1 参数
>
> 禁止使用:摄图网、知乎、image.so.com、Picsum 等平台
>
> 注意:v8 直接从 data-show-ext.objurl 提取原图 URL,支持所有来源(含抖音)
| 平台 | 尺寸预设 | 说明 |
|------|---------|------|
| 公众号文章配图 | 4K_landscape(3840×2160) | 16:9 横图 |
| 公众号贴图 | 4K_portrait(2160×3840) | 9:16 竖图 |
| 小红书封面/竖图 | 4K_portrait 或 1080+_portrait | 3:4 竖图最佳 |
| 小红书笔记配图 | 4K_square 或 1080+_square | 1:1 方图 |
| 微博配图 | 4K_landscape 或 4K_square | 横图或方图 |
原因:百度页面加载的图片数量有限,部分链接下载失败(403/超时)。
解决:
--keywords 多关键词模式:--keywords "JK少女" "JK制服 少女" "JK 高清美女"
--scroll 参数,比如 --scroll 25 或 --scroll 30
原因:同一图片可能在不同索引位置,或多次运行脚本导致。
解决:
python scripts/baidu_image_scraper_unified.py --clean --output "目录"
原因:旧方案中直接下载抖音原始 URL(url= 参数)会 403。
解决:v8 新方案直接提取 data-show-ext.objurl,该 URL 指向百度 CDN 缓存(miaobi-lite.cdn.bcebos.com),可直接下载。
可能原因:
解决:v7 已增加实时进度打印,可以看到每 20 张的下载进度。如果长时间无输出,可能是百度触发了验证码,需要手动关闭浏览器重试。
| 脚本 | 说明 | 状态 |
|------|------|------|
| scripts/baidu_image_scraper_v8.py | v8 重构版 - 优先 objurl,失败用 url 兜底 | ✅ 唯一脚本 |
共 1 个版本