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日

相关文章

  • Python argparse 解析命令行参数模块详情

    Python argparse 解析命令行参数模块详情 Python argparse 是 Python 核心库中用于解析命令行参数的模块,它可以非常方便地处理命令行参数,提供了丰富的功能和选项。本文将介绍 argparse 模块的用法,让你明白如何在 Python 代码中使用 argparse 来解析命令行参数。 简介 argparse 模块是 Pytho…

    python 2023年6月3日
    00
  • 解决Python命令行下退格,删除,方向键乱码(亲测有效)

    我来为你详细讲解如何解决Python命令行下退格、删除、方向键乱码问题。 问题描述 在Python命令行界面中,使用退格键、删除键以及方向键时,可能会出现输入不正常的情况。比如输入 backspace 键时会输出 ^H ,输入方向键时会出现一些其它奇怪的字符,这样显然不利于编写代码。 解决方案 这里提供两种不同的解决方案,分别是: 修改 Python 环境变…

    python 2023年5月20日
    00
  • python基于Tkinter实现人员管理系统

    下面我会详细讲解“Python基于Tkinter实现人员管理系统”的完整攻略,包含以下几个部分: 安装Tkinter Tkinter是Python的标准GUI库,因此不需要额外安装。但如果你发现你的Python没有安装Tkinter库,那么你需要安装它。可以通过以下命令在命令行中安装: sudo apt-get install python3-tk 创建GU…

    python 2023年5月30日
    00
  • python将字符串转换成json的方法小结

    下面我将详细讲解“Python将字符串转换成JSON的方法小结”。 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,它的写法类似于JavaScript对象。Python内置了JSON模块,可以方便地在Python与其他语言之间进行数据交换。 JSON库常用函数 在Python中使用JSON库将字符…

    python 2023年6月3日
    00
  • Python with用法:自动关闭文件进程

    Python with用法:自动关闭文件进程 在 Python 中,使用文件进行读写操作是十分常见的操作行为。通常我们需要手动打开文件、读取文件、写入数据并关闭文件进程。在这个过程中,如果程序出现异常或者在读写文件等待过程中被打断,导致文件未能完全正常关闭,这样就容易出现文件泄露或者文件损坏等问题。 使用 with 语句可以有效解决这类问题,with 语句可…

    python 2023年5月19日
    00
  • Python3 多线程(连接池)操作MySQL插入数据

    下面我将详细介绍如何使用Python3多线程(连接池)操作MySQL插入数据。 准备工作 首先,我们需要安装Python3以及对应的MySQL库。可以使用以下命令进行安装: pip install pymysql 创建数据库连接池 使用连接池可以最大化利用已经建立的连接,提高程序的性能和并发能力。下面是创建连接池的示例代码: import pymysql f…

    python 2023年5月19日
    00
  • 浅谈Python爬取网页的编码处理

    在Python爬虫中,网页的编码处理是一个非常重要的问题。如果不正确地处理编码,可能会导致乱码或无法解析的情况。本攻略将详细讲解Python爬取网页的编码处理,包括如何自动识别编码、如何手动指定编码、以及如何处理乱码。同时,提供两个示例,演示如何处理不同编码的网页。 自动识别编码 在Python爬虫中,我们可以使用requests库自动识别网页的编码。req…

    python 2023年5月15日
    00
  • Python四大金刚之元组详解

    Python四大金刚之元组详解 元组(tuple)是Python中的一种基本数据结构,和列表、字典、集合并列为Python四大基本数据类型。本文将对元组进行详细的讲解,包括元组的定义、基本操作、特点以及使用场景等。 元组的定义 元组是一种不可变序列,和列表类似,可以存储任意类型的数据。元组的定义使用小括号,其中的数据用逗号隔开。 以下是一个元组的定义示例: …

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