下面是关于如何使用Python自动从arXiv下载论文的完整攻略!
准备工作
- 申请arXiv API的token
首先需要到 arXiv API页面 申请API token,注册后可以得到自己的TOKEN。之后我们会将此TOKEN用于Python下载论文的代码中。
环境搭建
-
安装Python3.x
在Python官方网站下载最新的Python3.x版本并进行安装。 -
安装依赖库
使用pip命令安装以下几个Python依赖库:
pip install feedparser requests
其中feedparser
库用于解析arXiv论文RSS订阅源,requests
库用于下载PDF和其他文件。
编写代码
接下来是一个可以自动从arXiv下载论文的Python代码。我们可以通过指定日期范围和其他限制条件来下载特定范围的论文。下面是两个示例代码:
示例1:下载2021年1月1日到2021年1月7日之间所有computer science领域的论文
import feedparser
import requests
arxiv_url = 'http://export.arxiv.org/api/query'
query = 'cat:cs.CL'
start_date = '20210101'
end_date = '20210107'
results_per_query = 100
total_downloaded = 0
while True:
query_params = {'search_query': query,
'start': total_downloaded,
'max_results': results_per_query,
'sortBy': 'lastUpdatedDate',
'sortOrder': 'descending',
'submitted_date': '[' + start_date + ' TO ' + end_date + ']',
'id_list': '',
'some_ignored_field': ''}
response = requests.get(arxiv_url, params=query_params)
feed = feedparser.parse(response.content)
if len(feed.entries) == 0:
break
for entry in feed.entries:
doi = entry.get('arxiv_doi', None)
pdf_link = entry.get('links', None)
if doi:
pdf_link = 'http://arxiv.org/pdf/' + doi + '.pdf'
elif pdf_link:
pdf_link = pdf_link[0]['href']
else:
continue
pdf_content = requests.get(pdf_link)
print('Downloading %s' % pdf_link)
with open(doi + '.pdf', 'wb') as f:
f.write(pdf_content.content)
total_downloaded += 1
print('Downloaded %d papers' % total_downloaded)
示例2:下载2020年1月1日到2020年12月31日之间所有statistics领域的论文,以及这些论文对应的源码文件
import feedparser
import requests
arxiv_url = 'http://export.arxiv.org/api/query'
query = 'cat:stat'
start_date = '20200101'
end_date = '20201231'
results_per_query = 100
total_downloaded = 0
while True:
query_params = {'search_query': query,
'start': total_downloaded,
'max_results': results_per_query,
'sortBy': 'lastUpdatedDate',
'sortOrder': 'descending',
'submitted_date': '[' + start_date + ' TO ' + end_date + ']',
'id_list': '',
'some_ignored_field': ''}
response = requests.get(arxiv_url, params=query_params)
feed = feedparser.parse(response.content)
if len(feed.entries) == 0:
break
for entry in feed.entries:
doi = entry.get('arxiv_doi', None)
pdf_link = entry.get('links', None)
if doi:
pdf_link = 'http://arxiv.org/pdf/' + doi + '.pdf'
elif pdf_link:
pdf_link = pdf_link[0]['href']
else:
continue
pdf_content = requests.get(pdf_link)
print('Downloading %s' % pdf_link)
with open(doi + '.pdf', 'wb') as f:
f.write(pdf_content.content)
source_link = doi.replace('abs', 'src') + '.tar.gz'
source_content = requests.get('http://arxiv.org/src/' + source_link)
print('Downloading %s' % source_link)
with open(doi.replace('/', '') + '.tar.gz', 'wb') as f:
f.write(source_content.content)
total_downloaded += 1
print('Downloaded %d papers' % total_downloaded)
运行代码
将代码保存为Python文件,在命令行中进入到保存的文件所在的目录下,然后执行以下命令:
python filename.py
其中filename.py
是你保存的Python文件的名称。
结论
通过以上Python代码,在安装好依赖库和获取arXiv API token的前提下,即可快速自动下载论文。根据实际需要,你可以根据自己的需求来改变代码来满足自己的需求,比如下载更多的论文,或者指定更多的其他限制条件等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动从arxiv下载paper的示例代码 - Python技术站