基于 Scrapling 框架的 OpenLibrary.org 数据爬取工具。
- 自动登录管理: 需要登录时弹出浏览器窗口, 手动登录后自动保存 Cookie
- Cookie 持久化: 自动保存/加载/刷新 Cookie, 避免重复登录
- 速率控制: 遵守 OpenLibrary 的 3 req/s 限制
- JSON API 优先: 使用官方 JSON API 获取数据, 高效可靠
- 丰富的命令: 搜索、详情、批量爬取等多种模式
cd openlibrary_scraper
pip install "scrapling[all]"
scrapling install # 下载浏览器二进制文件# 一键启动
./start.sh
# 或手动启动
python webapp.py浏览器打开 http://localhost:5000 即可使用图形界面。
# 搜索书籍
python main.py search "python programming" --limit 50
# 获取书籍详情
python main.py book OL45804W
# 通过 ISBN 查询
python main.py isbn 9780596007126
# 获取作者信息及作品列表
python main.py author OL34184A
python main.py author-works OL34184A --limit 100
# 获取主题下的书籍
python main.py subject science_fiction --limit 30
# 爬取所有常见主题
python main.py crawl-subjects --limit 50
# 批量搜索 (从文件)
python main.py batch-search keywords.txt --limit 20# 先登录 (弹出浏览器窗口)
python main.py login
# 获取用户书单
python main.py lists <username>
# 获取阅读记录
python main.py reading-log <username> --shelf want-to-read# 查看状态
python main.py cookie-status
# 清除 (重新登录)
python main.py logoutopenlibrary_scraper/
├── start.sh # 一键启动脚本
├── webapp.py # Web UI 后端 (Flask + SocketIO)
├── main.py # CLI 入口
├── config.py # 配置
├── cookie_manager.py # Cookie 持久化
├── auth_manager.py # 登录/认证管理
├── scraper.py # 爬取核心逻辑
├── requirements.txt # 依赖
├── templates/
│ └── index.html # Web UI 页面
├── static/
│ ├── style.css # 暗色主题样式
│ └── app.js # 前端交互逻辑
├── cookies.json # (自动生成) Cookie 文件
└── data/ # (自动生成) 爬取数据
├── searches/
├── works/
├── editions/
├── isbn/
├── authors/
├── author_works/
├── subjects/
├── lists/
├── reading_log/
└── batch/
编辑 config.py:
| 参数 | 默认值 | 说明 |
|---|---|---|
| USER_AGENT | OpenLibraryScraper/1.0 | 请改为你的联系邮箱 |
| REQUEST_DELAY | 0.4s | 请求间隔 (3 req/s) |
| COOKIE_MAX_AGE_HOURS | 24h | Cookie 过期时间 |
| COOKIE_REFRESH_THRESHOLD | 0.8 | 80% 时间到自动刷新 |
重要: 请修改 config.py 中的 USER_AGENT, 将 your-email@example.com 替换为你的邮箱,
这样 OpenLibrary 可以在出问题时联系你, 也能获得更高的速率限制 (3 req/s)。