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 等符合条件的期刊

典型适用场景

  1. 系统文献综述(Systematic Literature Review):用布尔逻辑批量抓 PubMed + xRxiv 论文,统一导出 JSONL 做后续分析
  2. AIGC / AI 领域 meta-analysis:搜 "LLM" OR "large language model" OR "transformer" 跨多库看论文发表趋势
  3. 科研影响力评估:用 get_citations_by_doi 批量查 Google Scholar 引用数,辅助判断某研究方向的热度
  4. 预印本追踪:定期跑 biorxiv() dump,跟踪 bioRxiv 新论文发布量

坑与注意

⚠️ Google Scholar 无官方 APIget_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。


与同类对比

工具 覆盖库 引用数 PDF 适用场景
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