首页 > 编程语言 >Python - arxiv

Python - arxiv

时间:2024-04-04 19:29:25浏览次数:26  
标签:Search Python arxiv results client paper filename

arxiv

文章目录


一、关于 arxiv.py


arxiv.py 是 arXiv API 的 Python wrapper。

arXiv API : https://info.arxiv.org/help/api/index.html

arXiv是康奈尔大学图书馆的一个项目,提供物理、数学、计算机科学、定量生物学、定量金融和统计学领域 100 多万篇文章的开放访问。


安装

pip install arxiv

Python 引入

import arxiv


二、使用示例


1、获取结果
import arxiv

# Construct the default API client.
client = arxiv.Client()

# Search for the 10 most recent articles matching the keyword "quantum."
search = arxiv.Search(
  query = "quantum",
  max_results = 10,
  sort_by = arxiv.SortCriterion.SubmittedDate
)

results = client.results(search)

# `results` is a generator; you can iterate over its elements one by one...
for r in client.results(search):
  print(r.title)
# ...or exhaust it into a list. Careful: this is slow for large results sets.
all_results = list(results)
print([r.title for r in all_results])

# For advanced query syntax documentation, see the arXiv API User Manual:
# https://arxiv.org/help/api/user-manual#query_details
search = arxiv.Search(query = "au:del_maestro AND ti:checkerboard")
first_result = next(client.results(search))
print(first_result)

# Search for the paper with ID "1605.08386v1"
search_by_id = arxiv.Search(id_list=["1605.08386v1"])
# Reuse client to fetch the paper, then print its title.
first_result = next(client.results(search))
print(first_result.title)

2、下载 papers

要下载 ID 为 "1605.08386v1 "的论文 PDF,请运行 Search,然后使用 Result.download_pdf()

import arxiv

paper = next(arxiv.Client().results(arxiv.Search(id_list=["1605.08386v1"])))
# Download the PDF to the PWD with a default filename.
paper.download_pdf()
# Download the PDF to the PWD with a custom filename.
paper.download_pdf(filename="downloaded-paper.pdf")
# Download the PDF to a specified directory with a custom filename.
paper.download_pdf(dirpath="./mydir", filename="downloaded-paper.pdf")

同样的界面也可用于下载论文源的 .tar.gz 文件:

import arxiv

paper = next(arxiv.Client().results(arxiv.Search(id_list=["1605.08386v1"])))
# Download the archive to the PWD with a default filename.
paper.download_source()
# Download the archive to the PWD with a custom filename.
paper.download_source(filename="downloaded-paper.tar.gz")
# Download the archive to a specified directory with a custom filename.
paper.download_source(dirpath="./mydir", filename="downloaded-paper.tar.gz")

3、自定义 client 获取结果
import arxiv

big_slow_client = arxiv.Client(
  page_size = 1000,
  delay_seconds = 10.0,
  num_retries = 5
)

# Prints 1000 titles before needing to make another request.
for result in big_slow_client.results(arxiv.Search(query="quantum")):
  print(result.title)

4、日志

要检查此软件包的网络行为和 API 逻辑,请配置一个 DEBUG 级日志记录器。

>>> import logging, arxiv
>>> logging.basicConfig(level=logging.DEBUG)
>>> client = arxiv.Client()
>>> paper = next(client.results(arxiv.Search(id_list=["1605.08386v1"])))
INFO:arxiv.arxiv:Requesting 100 results at offset 0
INFO:arxiv.arxiv:Requesting page (first: False, try: 0): https://export.arxiv.org/api/query?search_query=&id_list=1605.08386v1&sortBy=relevance&sortOrder=descending&start=0&max_results=100
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): export.arxiv.org:443
DEBUG:urllib3.connectionpool:https://export.arxiv.org:443 "GET /api/query?search_query=&id_list=1605.08386v1&sortBy=relevance&sortOrder=descending&start=0&max_results=100&user-agent=arxiv.py%2F1.4.8 HTTP/1.1" 200 979

三、类型说明


1、Client

Client指定了从 arXiv 应用程序接口获取结果的可重用策略。

对于大多数用例,默认client就足够了。

客户端配置指定了分页和重试逻辑。

Reusing客户端允许连续的 API 调用使用相同的连接池,并确保它们遵守您设置的速率限制。


2、Search

Search 指定了对 arXiv 数据库的搜索。

使用Client.results可以获得Results 的生成器。


3、Result

Client.results 生成的 Result 对象包括每篇论文的元数据和下载论文内容的帮助方法。

底层原始数据的含义记录在 arXiv API User Manual: Details of Atom Results Returned

Result 还公开了下载论文的辅助方法: Result.download_pdfResult.download_source.


2024-03-28(四)

标签:Search,Python,arxiv,results,client,paper,filename
From: https://blog.csdn.net/lovechris00/article/details/137098632

相关文章

  • 如何利用c调用python代码
    C语言调用python通过C语言调用Python代码,需要先安装libpython3的dev依赖库(不同的ubuntu版本下,python版本可能会有差异,比如ubuntu22.04里是libpython3.10-dev)。首先可以通过以下命令验证是否是否已经存在python3的dev包dpkg-l|greplibpython3正常会有类似如下的输出,出......
  • Python数据分析与可视化笔记 九 分类问题
    分类        分类是找出数据库中一组数据对象的共同特点,并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。        分类学习是一类监督学习的问题,训练数据会包含其分类结果,根据分类结果分为以下几种问题。1.......
  • 11.python的字典dict(下) 遍历字典,结构优化
    11.python的字典dict(下)遍历所有的键值对items()方法是字典的一个内置方法,用于返回字典中所有键值对的视图(view)。它返回一个可迭代的对象,每个元素都是一个包含键和对应值的元组。下面用一个例子来说明items()方法的用法:dict1={'name':'John','age':25,'job':'En......
  • Python企业面试题1 —— 基础篇
    1.b、B、KB、MB、GB的关系?b----位(bit)B----字节(一个字节等于8位)1B=8bit1KB=1024B1MB=1024KB1GB=1024MB2.PE8规范1.使用4个空格而不是tab键进行缩进。2.每行长度不能超过79。3.使用空行来间隔函数和类。4.必要时候,在每一行下写注释。5.......
  • python相对路径导包与绝对路径导包的正确方式
    【python相对路径导包与绝对路径导包的正确方式】python相对路径导包与绝对路径导包的正确方式_哔哩哔哩_bilibilipython导包的难题,今天解决了,相对路径导包和绝对路径导包,均可以!!!,视频播放量5、弹幕量0、点赞数0、投硬币枚数0、收藏人数0、转发人数1,视频作者天龙战神......
  • Python+requests+Pytest+logging+allure+pymysql框架详解
    一、框架目录结构1)tools目录用来放公共方法存储,如发送接口以及读取测试数据的方法,响应断言数据库断言前置sql等方法;2)datas目录用例存储接口用例的测试数据,我是用excel来存储的数据,文件数据图片数据等;3)testcases目录用来存放测试用例,一个python文件对应一个接口模块的......
  • Python从0到100(十):Python集合介绍及运用
    一、集合定义定义:由不同元素组成的集合,集合是一组无序排列可hash值,可作为字典的key。特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的单个值。(1、不同元素组成2、无序3、集合中的元素必须是不可变类型)二、创建集合在Python中......
  • Python常用算法思想--递归算法思想详解【附源码】
    递归算法能够重复性的将问题分解为同类的子问题,然后解决这些子问题,最终达到解决最开始的问题为目的。以下从解决“阶乘”问题、“汉诺塔”问题、“斐波那契数列”问题、“最大公倍数和最小公约数”问题、“小球弹跳”、“深度优先”与“广度优先”问题等六个经典递归算法的案例......
  • 使用 Python 和 TensorFlow 构建深度人脸检测模型
    在本教程中,我们将逐步介绍使用Python和TensorFlow构建用于人脸检测的深度学习模型的过程。人脸检测是许多计算机视觉应用的重要组成部分,包括人脸识别、监控和图像理解。我们将利用卷积神经网络(CNN)和VGG16架构的强大功能来完成此任务。1.设置和数据收集1.1安装......
  • 使用 Python 构建第一个 CNN 机器学习模型的完整指南
    在这篇博文中,我们将逐步介绍如何使用Python构建第一个卷积神经网络(CNN)机器学习模型。由于CNN能够捕获数据中的空间层次结构,因此被广泛用于图像识别和分类任务。第1步:导入必要的库首先,让我们导入构建CNN模型所需的库:importnumpyasnpimportmatplotlib.pyplo......