python自动从arxiv下载paper的示例代码

下面是关于如何使用Python自动从arXiv下载论文的完整攻略!

准备工作

  1. 申请arXiv API的token
    首先需要到 arXiv API页面 申请API token,注册后可以得到自己的TOKEN。之后我们会将此TOKEN用于Python下载论文的代码中。

环境搭建

  1. 安装Python3.x
    在Python官方网站下载最新的Python3.x版本并进行安装。

  2. 安装依赖库
    使用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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • python2和python3的输入和输出区别介绍

    Python2 和 Python3 的输入输出区别介绍 在 Python 2.x 版本中,我们使用 raw_input() 函数来获取用户的输入,用 print 语句来输出结果。而在 Python 3.x 版本中,这些函数的名称都有所改变,raw_input() 被替换为 input(),print 语句被替换为 print() 函数。 下面我们通过几个示例…

    python 2023年6月5日
    00
  • 如何使用Python在MySQL中使用触发器?

    当使用Python与MySQL一起使用时,可以使用触发器来自动执行某些操作。触发器是MySQL中的一种特殊类型的存储过程,它在特定的事件发生时自动执行。以下是使用Python在MySQL中使用触发器的完整略,包括创建触发器、使用触发器和删除触发器等步骤。同时,还提供了两个示例来演示如何Python中使用MySQL触发器。 创建触发器 在Python中使用触发…

    python 2023年5月12日
    00
  • python中ASCII码和字符的转换方法

    当在Python中需要将ASCII码转换为字符 或者 字符转换为ASCII码时,可以采用以下方法: ASCII码转字符 在Python中,将ASCII码转换成字符的方法是使用内置函数chr()。 chr()接收一个整数作为参数,并返回与该整数对应的字符。以下是一个简单的示例: ascii_num = 97 char = chr(ascii_num) prin…

    python 2023年5月31日
    00
  • Python 音频生成器的实现示例

    Python音频生成器是一种能够生成声音的工具,可以通过简单的编程方式控制声音的波形、频率、响度等属性,实现丰富多样的音频效果。下面是Python音频生成器的完整攻略: 准备工作 在开始编写Python音频生成器之前,你需要安装一些必要的Python库,如 numpy, scipy 和 matplotlib。可以使用pip在命令行中安装这些库: pip in…

    python 2023年5月19日
    00
  • python使用正则表达式的search()函数实现指定位置搜索功能

    以下是“Python使用正则表达式的search()函数实现指定位置搜索功能”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来搜索字符串中的模式。search()函数是re模块中最常用的函数之一,它可以在字符串中搜索指定的模式,并返回第一个匹配项。本文将详细讲解如何使用search()函数实现指定位置搜索功能。 二、解决方案 2.1 s…

    python 2023年5月14日
    00
  • 基于Python 中函数的 收集参数 机制

    基于Python中函数的收集参数机制,可以分为两种:收集位置参数和收集关键字参数。 收集位置参数 如果函数不确定需要传入多少个位置参数,可以使用收集位置参数的方式。以下是示例代码: def sum_all_numbers(*args): total = 0 for num in args: total += num return total print(su…

    python 2023年6月5日
    00
  • python 异常的传递性及主动抛出学习

    Python 异常的传递性及主动抛出学习 异常传递性 在 Python 中,异常可以在函数间传递。当函数内部发生异常时,该异常可以通过函数调用链一直传递到最终的调用处。如果这个异常在最终的调用处仍未处理,则程序将会终止并打印出异常信息。 下面我们通过一个示例来说明异常传递性。 def divide(a, b): try: result = a / b exc…

    python 2023年5月13日
    00
  • Python实现图片转字符画的代码实例

    当你想将一张图片转换成由字符构成的艺术品时,可以使用Python编程语言来实现这个过程。这个过程包括了读取图像、将图像转换成灰度图、将灰度值映射到字符集合中,最后将结果打印出来或保存到文件中。 下面是这个过程的详细攻略: 步骤一:安装需要的库 在Python中,有很多第三方库可以用来读取和处理图像。这里我们使用 Python Imaging Library …

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部