Skip to content

Repository files navigation

OpenLibrary 爬虫

基于 Scrapling 框架的 OpenLibrary.org 数据爬取工具。

功能特性

  • 自动登录管理: 需要登录时弹出浏览器窗口, 手动登录后自动保存 Cookie
  • Cookie 持久化: 自动保存/加载/刷新 Cookie, 避免重复登录
  • 速率控制: 遵守 OpenLibrary 的 3 req/s 限制
  • JSON API 优先: 使用官方 JSON API 获取数据, 高效可靠
  • 丰富的命令: 搜索、详情、批量爬取等多种模式

安装

cd openlibrary_scraper
pip install "scrapling[all]"
scrapling install        # 下载浏览器二进制文件

快速开始 — Web UI (推荐)

# 一键启动
./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

Cookie 管理

# 查看状态
python main.py cookie-status

# 清除 (重新登录)
python main.py logout

项目结构

openlibrary_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)。

About

基于 Scrapling 框架的 OpenLibrary 数据爬取工具,支持多模式搜索、Cookie 持久化、Web 控制台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages