使用 Python 抓取 ArXiv 最新论文

研究员同学您好!!你一定听说过研究和收集 ArXiv 论文的任务是多么繁琐。你猜怎么了?!我们可以借助Python编程语言自动化该任务,并快速轻松地获取相关论文。

今天,在本教程中,我们的目标是构建这样一个 Python 代码,只需几行代码即可在几分钟内获得所需的研究论文!我们还在等什么?让我们开始吧!

另请阅读:Python Selenium 简介和设置


抓取 ArXiv 最新论文的代码

任何程序的第一步都是安装所有必要的模块/库并将其导入到我们的程序中。

为了抓取 ArXiv 研究论文,我们需要安装ArXivpython 库。可以使用下面的 python 命令完成相同的操作pip

pip install arxiv

接下来,让我们导入程序所需的两个模块,即 iepandasArXivmodule。pandas 模块需要以数据帧的形式保存最终数据集。我们还将询问用户研究人员需要有关使用可用功能的论文的主题input

1
2
3
4
import pandas as pd
import arxiv
 
topic = input("Enter the topic you need to search for : ")

一旦我们安装并导入了所有必要的库,我们也有了需要研究的主题。我们将利用该Search功能来获取所需的论文以及有关论文的所有详细信息。

1
2
3
4
5
6
search = arxiv.Search(
  query = topic,
  max_results = 300,
  sort_by = arxiv.SortCriterion.SubmittedDate,
  sort_order = arxiv.SortOrder.Descending
)

该函数将采用许多参数。让我们了解上面代码中使用的那些。

query用于指定要搜索的主题。max_results用于分配结果数(默认值:10,最大值:30,000)。sort_by用于指定用于对输出进行排序的因素(subscribedDate、lastUpdatedDate 或相关性)。sort_order用于设置提交论文的顺序(升序或降序)。

另请阅读:使用 Selenium 从网页获取数据 [完整指南]

但此代码不会导致显示论文或任何信息。为此,我们需要一个循环。我们将在这里做的是浏览我们收到的所有 300 篇论文,然后将所有论文的一些信息保存在列表中,稍后将其传输到使用dataframe图书馆pandas

我们可以收集关于某篇论文的以下信息:论文的 ID、论文的标题、论文的摘要、论文涉及的作者、论文的 URL 以及所属的类别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
all_data = []
for result in search.results():
  temp = ["","","","",""]
  temp[0] = result.title
  temp[1] = result.published
  temp[2] = result.entry_id
  temp[3] = result.summary
  temp[4] = result.pdf_url
  all_data.append(temp)
 
column_names = ['Title','Date','Id','Summary','URL']
df = pd.DataFrame(all_data, columns=column_names)
 
print("Number of papers extracted : ",df.shape[0])
df.head()

执行代码片段后,结果将是数据框中的 300 篇研究论文数据。

ArXiv 抓取的数据

使用 Python 抓取 ArXiv 最新论文的完整代码

让我们看一下下面的抓取工具的完整代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 号
18
19 号
20
21
22
23
24
25
26
27
import pandas as pd
import arxiv
 
topic = input("Enter the topic you need to search for : ")
 
search = arxiv.Search(
  query = topic,
  max_results = 300,
  sort_by = arxiv.SortCriterion.SubmittedDate,
  sort_order = arxiv.SortOrder.Descending
)
 
all_data = []
for result in search.results():
  temp = ["","","","",""]
  temp[0] = result.title
  temp[1] = result.published
  temp[2] = result.entry_id
  temp[3] = result.summary
  temp[4] = result.pdf_url
  all_data.append(temp)
 
column_names = ['Title','Date','Id','Summary','URL']
df = pd.DataFrame(all_data, columns=column_names)
 
print("Number of papers extracted : ",df.shape[0])
df.head()

让我们看一下我们刚刚开发的同一刮刀的另一个输出。

ArXiv 抓取数据 2

另请阅读:如何使用 Scrapy 在 Python 中抓取雅虎财经数据