首页文献管理数据分析开源社区写作排版
首页 › 科研工具 › arXiv预印本平台高级检索与API

arXiv预印本平台高级检索与API集成解析 (版本 2024.08.02)

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

TL;DR: 本文档旨在为SRE团队及相关科研人员提供arXiv预印本平台的高级使用指南。内容涵盖精确检索语法、API调用方法(包括arXiv API key怎么用)、以及自动化文献获取流程。目标是优化信息检索效率,减少人工干预。

Pre-requisites:

Version: 2024.08.02

Date: August 2, 2024

1. arXiv高级检索语法详解

2020行业萌芽2021快速增长2022竞争加剧2023洗牌整合2024成熟稳定

arXiv提供一套强大的查询语言,支持布尔逻辑、字段限定和日期范围检索,以实现高精度文献发现。

1.1. 基础字段与布尔操作

以下为常用字段标识符及其布尔组合示例。

Note: 字段标识符不区分大小写,但布尔运算符(AND, OR, ANDNOT)必须大写。

1.1.1. 按作者检索。

query=au:"John Doe"

1.1.1.1. 预期输出:检索作者为“John Doe”的论文。

1.1.2. 按标题检索关键词。

query=ti:"Large Language Models" AND abs:"reinforcement learning"

1.1.2.1. 预期输出:检索标题包含“Large Language Models”且摘要包含“reinforcement learning”的论文。

1.1.3. 按类别检索。

query=cat:cs.AI OR cat:cs.CL

1.1.3.1. 预期输出:检索类别为人工智能或计算语言学的论文。

1.2. 日期范围与版本检索

利用提交日期或更新日期进行精确筛选。

1.2.1. 检索特定日期范围内的论文。

query=submittedDate:[20230101 TO 20231231] AND cat:cs.CV

1.2.1.1. 预期输出:检索2023年提交的计算机视觉领域论文。

1.2.2. 检索最新版本。通常在API中使用。

2. arXiv API集成与自动化下载

📊STEP 1确定选题📋STEP 2检索文献💡STEP 3整理分析🎯STEP 4成文发表

arXiv API允许程序化访问论文元数据和PDF链接,是实现自动化工作流的关键。这回答了arXiv论文怎么下载的自动化需求。

2.1. API基础用法

API Endpoint: http://export.arxiv.org/api/query

2.1.1. 构建API请求URL。

import requests

base_url = "http://export.arxiv.org/api/query"
search_query = 'cat:cs.AI AND submittedDate:[20240101 TO 20240131]'
max_results = 5

params = {
    'search_query': search_query,
    'start': 0,
    'max_results': max_results,
    'sortBy': 'submittedDate',
    'sortOrder': 'descending'
}

response = requests.get(base_url, params=params)
print(response.url)

2.1.1.1. 预期输出:

http://export.arxiv.org/api/query?search_query=cat%3Acs.AI+AND+submittedDate%3A%5B20240101+TO+20240131%5D&start=0&max_results=5&sortBy=submittedDate&sortOrder=descending

2.1.2. 解析API响应并提取PDF链接。arXiv下载器的实现核心。

import xml.etree.ElementTree as ET

root = ET.fromstring(response.content)

# Namespace for Atom feeds
ns = {'atom': 'http://www.w3.org/2005/Atom'}

for entry in root.findall('atom:entry', ns):
    title = entry.find('atom:title', ns).text.strip()
    pdf_link = ''
    for link in entry.findall('atom:link', ns):
        if 'type' in link.attrib and link.attrib['type'] == 'application/pdf':
            pdf_link = link.attrib['href']
            break
    print(f"Title: {title}\nPDF Link: {pdf_link}\n---")

2.1.2.1. 预期输出 (部分):

Title: On the Sample Complexity of Reinforcement Learning with a Generative Model
PDF Link: http://arxiv.org/pdf/2401.00001v1
---
Title: Scaling Laws for Neuro-Symbolic AI
PDF Link: http://arxiv.org/pdf/2401.00002v1
---

2.2. 自动化PDF下载

结合API获取的PDF链接,实现批量下载。

Warning: 请遵守arXiv的使用政策,避免对服务器造成过大负载。建议设置合理的请求间隔。

2.2.1. 下载单个PDF文件。

import os

def download_pdf(url, filename):
    try:
        response = requests.get(url, stream=True)
        response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
        with open(filename, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"Downloaded: {filename}")
    except requests.exceptions.RequestException as e:
        print(f"Error downloading {url}: {e}")

# Example usage from previous step's 'pdf_link'
# download_pdf("http://arxiv.org/pdf/2401.00001v1", "2401.00001v1.pdf")

2.2.1.1. 预期输出:

Downloaded: 2401.00001v1.pdf

References

上一篇R语言基础统计与图形绘制:面向SRE工程师的数据探索指南 (Version 20 下一篇Bitwig Studio 访问故障排查与网络环境优化:学术研究与开源视角

猜你喜欢

延伸阅读