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

yizhihongxing

下面是关于如何使用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日

相关文章

  • python3 正则表达式基础廖雪峰

    Python3正则表达式基础 正则表达式是一种用于描述字符串模式的语言,可以用于配、查找、替换和分割。在Python中,可以使用re模块来使用正则表达式。本文将详细介绍Python中正则表达式的语法、字符集、转义字符以及常用函数,并提供两个示例说明。 基本语法 正则表达式由普通字符和元成,普字符表示本身,而元字符则有特殊的含义。下面是一些常用元字符: .:匹…

    python 2023年5月14日
    00
  • 利用Python实现批量下载上市公司财务报表

    利用Python实现批量下载上市公司财务报表 简介 本文将介绍如何利用Python和第三方库实现批量下载上市公司财务报表。我们将以下载深交所上市公司2019年半年度报告为例。 步骤 步骤一:确定下载链接 首先我们需要确定要下载哪些报表,以及它们的下载链接。深交所上市公司2019年半年度报告的下载链接为: http://www.szse.cn/disclosu…

    python 2023年6月3日
    00
  • python中requests小技巧

    当使用Python进行Web开发时,requests是一个非常流行的库,可以帮助开发者与其他服务器进行交互。 在这里,我将介绍一些Python中requests库的小技巧,以方便你更好地使用requests。 requests库的基本用法 在使用requests库之前,请确保已经安装了它,使用以下命令可以安装requests库: pip install re…

    python 2023年6月3日
    00
  • 简单的命令查看安装的python版本号

    当我们安装Python后,我们需要查看其版本号,以便确保我们使用的是我们需要的版本。以下是查看安装的Python版本号的常用方法。 方法一:命令行查看 打开命令行界面,输入以下命令可以查看当前系统中安装的Python版本: python –version 执行完此命令后,输出信息会显示当前系统中安装的Python版本号,例如: Python 3.8.5 方…

    python 2023年6月3日
    00
  • python实现从字符串中找出字符1的位置以及个数的方法

    要从字符串中找出字符1的位置以及个数,可以使用Python内置的str类提供的有关串操作的方法、函数,下面为您详细介绍两种方法: 方法一:使用count()方法 步骤: 使用字符串的count()方法,统计字符1在字符串中出现的次数。 找出字符串中字符1所在的位置,使用字符串的find()方法,如果返回-1则说明没有找到。 下面是代码实现: s = ‘123…

    python 2023年6月5日
    00
  • Python 使用office365邮箱的示例

    下面是使用Python操作office365邮箱的攻略: 安装所需的Python库 使用Python操作office365邮箱,需要先安装几个Python库,分别是:exchangelib、request、requests_ntlm。 可以通过以下命令进行安装: pip install exchangelib request requests_ntlm 获取…

    python 2023年6月5日
    00
  • python 获取字典键值对的实现

    获取字典键值对,在Python中是一项常见的操作。以下是这个问题的解决方案: 一、使用items()方法 Python 字典(Dictionary) items()方法以列表返回可遍历的(键, 值) 元组数组。示例代码如下所示: # 创建字典 dict1 = {‘name’: ‘Tom’, ‘Age’: 15, ‘country’: ‘China’} # 获…

    python 2023年5月13日
    00
  • 详解python百行有效代码实现汉诺塔小游戏(简约版)

    详解Python百行有效代码实现汉诺塔小游戏(简约版) 本文介绍一个Python实现汉诺塔小游戏的代码,只需100行左右,包含了注释和测试代码。该代码实现了汉诺塔小游戏的完整功能,包括打印提示信息、输入和校验用户输入、移动棋子和胜利条件判断等。 汉诺塔小游戏介绍 汉诺塔(Tower of Hanoi)是一个古老的数学问题,通常有三个柱子和一些圆盘,每个圆盘都…

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