核心用法
该技能通过 Python 脚本 scrape_watchlist.py 爬取 Letterboxd 平台公开用户的观影清单(Watchlist),无需账号登录即可提取影片标题与链接,支持导出为 CSV 或 JSONL 格式。
基础命令
python scripts/scrape_watchlist.py <username> --out watchlist.csv
推荐稳健模式
python scripts/scrape_watchlist.py <username> --out watchlist.jsonl --delay-ms 300 --timeout 30 --retries 2
脚本采用分页爬取策略(/watchlist/page/<n>/),以 data-target-link="/film/..." 存在性作为终止条件,内置 250ms 默认延迟以遵守爬虫礼仪,支持重试与超时机制。
显著优点
- 零认证门槛:仅需公开用户名,无需 API 密钥或登录态
- 轻量输出:CSV/JSONL 双格式,便于后续导入 Notion、Excel 或其他媒体管理工具
- 容错设计:延迟、重试、超时参数可调,降低因反爬导致的失败率
- 正则驱动:不依赖特定 DOM 结构,通过
data-target-link属性定位,一定程度抵御前端微调
潜在局限
- 脆弱性:明确声明为"best-effort HTML scraping",若 Letterboxd 大幅改版需人工维护正则
- 公开数据限制:无法获取私密清单或用户收藏、评分等关联数据
- 速率敏感:延迟过低可能被临时封禁 IP,过高则拉取效率下降
- 无增量同步:全量爬取,不支持差异更新
适合人群
- 需要备份个人 Letterboxd 清单的影迷
- 希望将待看片单导入第三方工具(Plex、Trakt、Notion)的自动化用户
- 数据归档研究者,需批量获取公开片单元数据
常规风险
- 服务条款:Letterboxd 未公开 robots.txt 爬取政策,存在账号连带风险(若后续需登录其他功能)
- 数据一致性:用户实时增删影片期间爬取,可能产生中间状态
- 维护成本:依赖非官方接口,长期稳定性存疑
技术细节
- 用户名验证:
[A-Za-z0-9_-]+ - 终止条件:首页无影片海报链接即停止
- 输出字段:title(片名)、link(影片详情页 URL)