jannisborn/paperscraper · 上手攻略
- 仓库:jannisborn/paperscraper
- 链接:https://github.com/jannisborn/paperscraper
- 分类:科研工具 · 文献计量学
- 作者:Tom
- 更新:2026-08-27
是什么
paperscraper 是一个 Python 包,用于从 PubMed、arXiv、medRxiv、bioRxiv、chemRxiv 五大学术数据库抓取论文元数据、全文(PDF/XML),并支持 Google Scholar 引用数查询、期刊影响因子检索和自引分析,是做文献计量学(bibliometrics)和元分析(meta-analysis)的轻量级工具。
核心功能矩阵:
| 功能 | 支持数据库 |
|---|---|
| 元数据抓取 | PubMed、arXiv、medRxiv、bioRxiv、chemRxiv |
| 全文下载(PDF/XML) | DOI 指向的出版社 |
| 引用数查询 | Google Scholar |
| 期刊影响因子 | 多期刊检索 |
| 自引分析 | 论文级别 |
| 布尔逻辑搜索 | PubMed、xRxiv 各字段 |
| 本地批量 dump | arXiv(Kaggle/API)、xRxiv(JSONL 全量) |
⚠️ 注意:xRxiv 全量 dump(bioRxiv ~450K 篇)首次下载约 800 MB,需本地存储空间;bioRxiv dump 完整下载耗时约 1 小时。
解决什么问题
做文献综述或 meta-analysis 时,研究者面临:
- 分散的数据源:PubMed、arXiv、bioRxiv 各有 API,格式不统一,手工整理极耗时
- 引用数据获取难:Google Scholar 没有官方 API,批量获取 citation count 需要第三方方案
- PDF 批量下载:各出版社版权限制,直接爬取 PDF 有法律风险,但可以通过 DOI 请求开源论文
paperscraper 统一了这五库的数据接口,让批量搜索 + 元数据导出 + 引用分析在一套 Python 脚本内完成。
快速安装
pip install paperscraper
# 或使用 uv(推荐)
uv add paperscraper
uv sync
要运行:
uv run python -c "import paperscraper; print('OK')"
⚠️ 注意:基本安装已支持 PubMed、arXiv、Google Scholar 查询。抓取 bioRxiv / medRxiv / chemRxiv 需要额外下载 server dump(见下节)。
核心用法
1. PubMed 布尔搜索
嵌套列表表示 AND / OR 逻辑——外层列表为 AND,内层列表为 OR:
from paperscraper.pubmed import get_and_dump_pubmed_papers
# AI AND (Quantum computing OR Quantum information)
ai = ["Artificial intelligence", "Machine learning"]
qc = ["Quantum computing", "Quantum information", "Quantum algorithm"]
get_and_dump_pubmed_papers([ai, qc], "ai_quantum_chemistry.jsonl")
# 输出:符合 (AI AND (QC OR QI OR QA)) 条件的 PubMed 记录
2. 预印本服务器全量 Dump(首次)
from paperscraper.get_dumps import biorxiv, medrxiv, chemrxiv
chemrxiv() # <15min → +50K 论文(约 30 MB)
medrxiv() # <5min → +100K 论文(约 200 MB)
biorxiv() # <1h → +450K 论文(约 800 MB)
⚠️ 下载后需要重启 Python 解释器才能使新 dump 生效。
如遇连接问题,可调参数:
biorxiv(
max_retries=12,
request_timeout=(5.0, 45.0), # (connect_timeout, read_timeout)
retry_backoff_seconds=1.0,
max_workers=8,
window_days=30,
)
3. 日期范围搜索 xRxiv
from paperscraper.get_dumps import medrxiv
# 只下载特定日期范围的论文
medrxiv(start_date="2023-04-01", end_date="2023-04-08")
⚠️ 结果文件按当前日期命名,后续查询只基于该 dump;需留意 paperscraper/server_dumps/ 目录下的文件名。
4. 本地 arXiv 搜索(批量)
from paperscraper.get_dumps import arxiv
# 默认用 Kaggle 后端(快,需认证)
# kaggle auth login # 首次需先认证
arxiv(start_date='2019-01-01', end_date='2026-12-31')
# 小批量用 API 后端(慢但无需下载全量)
from paperscraper.arxiv import get_and_dump_arxiv_papers
get_and_dump_arxiv_papers(..., backend='api')
5. 跨库联合搜索
from paperscraper import dump_queries
ai = [["Artificial intelligence", "Machine learning"]]
qc = [["Quantum computing"]]
# 同时搜 PubMed + arXiv + xRxiv(已下载 dump)
dump_queries([ai, qc], ".")
6. PDF 下载
from paperscraper.pdf import save_pdf
result = save_pdf({"doi": "10.48550/arXiv.2207.03928"}, filepath="gt4sd_paper.pdf")
print(result) # True = 下载成功
⚠️ PDF 下载依赖出版社是否开放 DOI 指向的论文;版权论文会失败。
7. 引用数 + 影响因子查询
from paperscraper.citations import get_citations_by_doi
from paperscraper.impact import Impactor
# 引用数
citations = get_citations_by_doi("10.1021/acs.jcim.3c00132")
print(citations) # 输出示例:12
# 期刊影响因子
impactor = Impactor()
impactor.search("Nat Comms", threshold=85, sort_by="impact")
# 输出:Nature Communications,IF 15.7 等符合条件的期刊
典型适用场景
- 系统文献综述(Systematic Literature Review):用布尔逻辑批量抓 PubMed + xRxiv 论文,统一导出 JSONL 做后续分析
- AIGC / AI 领域 meta-analysis:搜 "LLM" OR "large language model" OR "transformer" 跨多库看论文发表趋势
- 科研影响力评估:用
get_citations_by_doi批量查 Google Scholar 引用数,辅助判断某研究方向的热度 - 预印本追踪:定期跑
biorxiv()dump,跟踪 bioRxiv 新论文发布量
坑与注意
⚠️ Google Scholar 无官方 API:get_citations_by_doi 依赖 scholarly 库,频率限制严格,批量查询需加延时,否则 IP 可能被封。
⚠️ PDF 下载版权风险:DOI 指向版权论文时 save_pdf 返回 False;开源论文(如 arXiv、bioRxiv)可正常下载;批量下载前请确认论文许可证。
⚠️ xRxiv dump 存储开销:bioRxiv 完整 dump 约 800 MB(450K 篇),需预留磁盘空间;不需要预印本分析时不建议下载。
⚠️ Kaggle 认证:arXiv Kaggle 后端需 kaggle auth login,无 Kaggle 账号用 backend='api' 代替。
⚠️ Python 重启生效:每次下载新 dump 后必须重启解释器,否则搜索仍基于旧数据。
⚠️ semantic scholar 引用:README 提及支持但未在示例中展开,get_citations_by_doi 默认走 Scholar 而非 Semantic Scholar。
与同类对比
| 工具 | 覆盖库 | 引用数 | 适用场景 | |
|---|---|---|---|---|
jannisborn/paperscraper |
PubMed/arXiv/xRxiv 5库 | Google Scholar | DOI 下载 | 文献计量 + meta-analysis |
pybliometrics |
Scopus / Web of Science | 官方 API | ❌ | 机构订阅数据库用户 |
scholarly |
Google Scholar | 原生 | ❌ | 纯引用数查询 |
LangChain retrieval |
自定义 | ❌ | ❌ | RAG 知识库构建 |
如果你需要跨多个学术数据库的统一搜索接口 + 引用分析,paperscraper 是 Python 生态中最顺手的;如果你只有 Scopus 订阅,pybliometrics 更适合。
一句话推荐结论
做文献综述或 meta-analysis 的研究者,试试
jannisborn/paperscraper——用一行 Python 搜完 PubMed + arXiv + bioRxiv 五大库,布尔逻辑批量导出 JSONL,是学术文献计量学场景的效率工具,但 Google Scholar 引用查询有频率限制,PDF 下载需注意版权。
原始仓库:https://github.com/jannisborn/paperscraper