arxiv api的python包装:http://arxiv.org/help/api/
arxiv的Python项目详细描述
< H1> ARXIV.PY^ {A1}^ {A2}
the arXiv API的python包装器。
关于arxiv
arXiv是康奈尔大学图书馆(cornell university library)的一个项目,提供了100多万篇物理、数学、计算机科学、定量生物学、定量金融和统计方面的文章的开放访问。
用法
安装
$ pip install arxiv
用确认安装
$ python setup.py test
在python脚本中,包括该行
importarxiv
查询
arxiv.query(query="",id_list=[],max_results=None,start=0,sort_by="relevance",sort_order="descending",prune=True,iterative=False,max_chunk_results=1000)
Argument | Type | Default |
---|---|---|
^{ | string | ^{ |
^{ | list of strings | ^{ |
^{ | int | 10 |
^{ | int | 0 |
^{ | string | ^{ |
^{ | string | ^{ |
^{ | boolean | ^{ |
^{ | boolean | ^{ |
^{ | int | 1000 |
query
:arxiv查询字符串。格式文档here。- 注意:多字段查询必须用空格分隔。
au:balents_leon AND cat:cond-mat.str-el
有效;au:balents_leon+AND+cat:cond-mat.str-el
无效。
- 注意:多字段查询必须用空格分隔。
id_list
:arxiv记录id的列表(通常采用"0710.5765v1"
格式)。- >:查询返回的最大结果数。
start
:arxiv查询结果中第一个返回对象的偏移量。sort_by
:对结果进行排序的arXiv字段sort_order
:排序顺序,即“升序”、“降序”或“无”。prune
:当True
时,接收的抽象对象将被简化iterative
:当True
时,query()
将返回迭代器。否则,query()
在内部迭代并返回结果的完整列表。- {由一个内部请求检索到的API的最大数量摘要。
查询示例:
importarxiv# Keyword queriesarxiv.query(query="quantum",max_results=100)# Multi-field queriesarxiv.query(query="au:balents_leon AND cat:cond-mat.str-el")# Get single record by IDarxiv.query(id_list=["1707.08567"])# Get multiple records by IDarxiv.query(id_list=["1707.08567","1707.08567"])# Get interator over query resultsresult=arxiv.query(query="quantum",max_chunk_results=10,iterative=True)forpaperinresult():print(paper)
有关query
和id_list
之间交互的更详细描述,请参见this section of the arXiv documentation。
下载文章pdf
arxiv.download(obj,dirpath="./",slugify=arxiv.slugify)
Argument | Type | Default | Required? |
---|---|---|---|
^{ | dict | N/A | Yes |
^{ | string | ^{ | No |
^{ | function | ^{ | No |
obj
是一个结果对象,是query()返回的列表之一obj
必须至少包含对应于pdf_url
和title
的值dirpath
是下载的pdf将保存到的相对目录路径。默认为当前工作目录。slugify
是将obj
处理为文件名的函数。默认情况下,arxiv.download(obj)
将对象ID前置到对象标题
importarxiv# Query for a paper of interest, then downloadpaper=arxiv.query(id_list=["1707.08567"])[0]arxiv.download(paper)# You can skip the query step if you have the paper info!paper2={"pdf_url":"http://arxiv.org/pdf/1707.08567v1","title":"The Paper Title"}arxiv.download(paper2)# Returns the object iddefcustom_slugify(obj):returnobj.get('id').split('/')[-1]# Download with a specified slugifier functionarxiv.download(paper,slugify=custom_slugify)