详细分析 ▾
运行时依赖
版本
v1.1.0:扩展文档并改进可用性指导。 - 在 SKILL.md 中新增推理框架、决策树、故障排除指南与自检清单。 - 更新文档以阐明安装、用法、功能集与排错步骤。 - 将主脚本从 script/ 移至 scripts/ 目录。 - 对技能描述与元数据进行小幅修订,提升清晰度与完整性。
安装命令
点击复制技能文档
# Pinterest Scraper 功能完整的 Pinterest 图片抓取器,支持自动滚动、多种输出选项。 ## 何时激活此技能 当用户想要从 Pinterest 下载图片时触发。 ## 推理框架 | 步骤 | 操作 | 原因 | |------|--------|-----| | 1 | EXTRACT | 解析 Pinterest URL,确定是画板/用户/搜索 | | 2 | LAUNCH | 启动带隐身选项的 Playwright 浏览器 | | 3 | SCROLL | 增量加载图片(Pinterest 使用无限滚动) | | 4 | COLLECT | 提取带质量选择的图片 URL | | 5 | DEDUP | 基于哈希的去重检测 | | 6 | DOWNLOAD | 将图片保存到输出文件夹 | | 7 | NOTIFY | 可选:发送到 Telegram | --- ## 安装 ``bash pip install playwright requests playwright install chromium ` --- ## 决策树 ### 你想做什么? ` ├── 下载画板/用户的图片 │ └── 使用:-u "URL" -s [滚动次数] │ ├── 获取最高质量 │ └── 使用:-q originals │ ├── 获取更小/更快的下载 │ └── 使用:-q 736x 或 236x │ ├── 将图片发送到手机 │ └── 使用:--telegram --token X --chat Y │ ├── 恢复中断的抓取 │ └── 使用:--resume │ └── 调试问题 └── 使用:-v(详细日志) ` ### 质量选择决策 | 质量 | 适用场景 | 文件大小 | |---------|----------|-----------| | originals | 最佳质量,归档 | 最大 | | 736x | 平衡较好 | 中等 | | 474x | 缩略图质量 | 小 | | 236x | 仅预览 | 最小 | | all | 保存所有版本 | 总大小最大 | --- ## 用法 ### 命令行 `bash python scrape_pinterest.py -u "URL" [选项] ` | 选项 | 说明 | 默认值 | |--------|-------------|---------| | -u, --url | Pinterest URL(必需) | - | | -s, --scrolls | 滚动次数 | 50 | | -o, --output | 输出文件夹 | ./pinterest_output | | -q, --quality | 质量:originals/736x/474x/236x/all | originals | | -v, --verbose | 启用详细日志 | false | | --telegram | 将图片发送到 Telegram | false | | --token | Telegram 机器人令牌 | - | | --chat | Telegram 聊天 ID | - | | --resume | 从上次抓取继续 | false | | --dedup | 跳过重复 | true | | --no-dedup | 关闭去重 | - | | --telegram-only | 仅发送已有文件 | false | ### 常用示例 `bash # 基础抓取(50 次滚动,originals,当前目录) python scrape_pinterest.py -u "URL" # 详细模式(日志输出到控制台 + scrape.log) python scrape_pinterest.py -u "URL" -v # 更多滚动、自定义输出、中等质量 python scrape_pinterest.py -u "URL" -s 100 -o ./output -q 736x -v # 带 Telegram 推送 python scrape_pinterest.py -u "URL" --telegram --token "TOKEN" --chat "CHAT_ID" # 恢复中断的抓取 python scrape_pinterest.py -u "URL" --resume -v # 显示帮助 python scrape_pinterest.py --help ` --- ## Python API 本工具基于 CLI。在 Python 代码中运行: `python import subprocess import os # 运行抓取器 result = subprocess.run( ['python3', 'scrape_pinterest.py', '-u', 'URL', '-s', '50', '-q', 'originals'], cwd='./scripts', capture_output=True, text=True ) print(result.returncode) # 0 = 成功 print(result.stdout) ` --- ## 功能 | 功能 | 说明 | |---------|-------------| | 无限滚动 | 自动滚动加载更多图片 | | 质量选项 | originals/736x/474x/236x/all | | Telegram | 直接发送到 Telegram | | 去重 | 基于哈希的重复检测 | | 恢复 | 从上次抓取继续 | | URL 类型 | 画板、用户主页、搜索结果 | | 详细日志 | -v 标记,日志输出到控制台 + scrape.log | --- ## 详细日志 使用 -v 或 --verbose 获取详细日志: `bash python scrape_pinterest.py -u "URL" -v ` 记录内容: - 滚动进度(每 10 次滚动) - 每次滚动发现的图片数 - 下载进度(X/Y) - Telegram 发送状态 - 错误与警告 日志文件: - 控制台:INFO 级别 - scrape.log:DEBUG 级别(详细) --- ## 故障排除 ### 问题:没有下载到图片 - 原因: 滚动次数不足,Pinterest 未加载 - 解决: 增加 -s 值(尝试 100–200) ### 问题:“找不到浏览器” - 原因: 未安装 Playwright - 解决: playwright install chromium ### 问题:SSL 证书错误(Mac) - 原因: macOS SSL 问题 - 解决: 在 requests 调用中使用 verify=False ### 问题:重复图片 - 原因: 去重被关闭或失败 - 解决: 使用 --dedup 标记(默认开启) ### 问题:恢复不起作用 - 原因: 状态文件缺失或 URL 变更 - 解决: 使用与原抓取相同的 URL,检查 .scrape_state.json ### 问题:Telegram 未发送 - 原因: 令牌/聊天 ID 无效,或被限速 - 解决: 校验机器人令牌,检查聊天 ID,Telegram 每批限 100 张图 ### 问题:详细日志未写入 - 原因: 文件权限问题 - 解决: 检查输出目录的写入权限 --- ## 自检 - [ ] Pinterest URL 有效(画板/用户/搜索) - [ ] 已安装 Playwright:playwright install chromium - [ ] 根据用例选择了合适质量 - [ ] 输出目录存在或可写 - [ ] 若使用 Telegram:令牌与聊天 ID 正确 - [ ] 若恢复抓取:使用与原抓取相同的 URL --- ## 注意事项 - Pinterest 动态加载——需滚动以加载更多图片 - 在 requests 中使用 verify=False(Mac SSL 问题) - 状态保存至 .scrape_state.json 以供恢复 - Telegram 每批限 100 张图 - 详细模式将详细日志写入 scrape.log --- ## 速查表 | 任务 | 命令 | |------|---------| | 基础抓取 | python scrape_pinterest.py -u "URL" | | 详细调试 | python scrape_pinterest.py -u "URL" -v | | 高质量 | python scrape_pinterest.py -u "URL" -q originals | | 快速/小图 | python scrape_pinterest.py -u "URL" -q 236x | | 发送到 Telegram | python scrape_pinterest.py -u "URL" --telegram --token X --chat Y | | 恢复 | python scrape_pinterest.py -u "URL" --resume | | 自定义输出 | python scrape_pinterest.py -u "URL" -o ./myfolder` | ---