简介
shot-scraper 是 Simon Willison 在 Playwright 之上包的 CLI —— headless Chrome 抓任何 URL 截图:全页、按 selector 裁剪元素、注入 JS、批量 YAML 配置、用 GitHub Actions cron 追踪页面变化。适合文档截图、视觉回归测试、OG 图生成、定时抓公开页面。任何 OS、Python 3.10+ 都行。装机时间 3 分钟。
安装 + 第一张图
pip install shot-scraper
shot-scraper install # 下载 Chromium
# 整页截图
shot-scraper https://tokrepo.com -o tokrepo.png元素 + 选择器
# 只截 hero 区
shot-scraper https://tokrepo.com --selector ".hero" -o hero.png
# 等某个元素出现再截
shot-scraper https://tokrepo.com --wait-for "document.querySelector('.assets').children.length > 5"截图前注入 JS
# 先隐藏 cookie banner 再截
shot-scraper https://example.com \
--javascript "document.querySelector('.cookie-banner').remove()" \
-o cleaned.png批量 YAML 配置
# shots.yml
- url: https://tokrepo.com
output: home.png
width: 1280
height: 800
- url: https://tokrepo.com/en/packs
output: packs.png
selector: ".arsenal"
width: 1200
- url: https://tokrepo.com/en/authors
output: authors.png
full_page: trueshot-scraper multi shots.ymlGitHub Actions cron 追踪变化
# .github/workflows/snapshot.yml
on:
schedule: [{ cron: "0 8 * * *" }]
jobs:
snap:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install shot-scraper && shot-scraper install
- run: shot-scraper multi shots.yml
- run: git add . && git diff --cached --stat && git commit -m "Daily snapshot $(date +%F)" && git pushFAQ
Q: shot-scraper vs 原生 Playwright? A: shot-scraper 是 80% 场景一行搞定。需要登录流、复杂表单填写、多步导航就直接用 Playwright。shot-scraper 包了 Playwright,下沉一步就回到原生。
Q: 能抓 HTML 不只是图片吗?
A: 能 —— shot-scraper html https://example.com -o page.html 保存 JS 渲染后的 HTML。配 --javascript 在抓取前跑抓取逻辑。SPA 抓取适用。
Q: Cookie / 鉴权?
A: 用 --auth auth.json 传 Playwright storage state 文件。先用 shot-scraper auth https://example.com 打开真浏览器登录一次。之后自动截图都带身份。