研究员同学您好!!你一定听说过研究和收集 ArXiv 论文的任务是多么繁琐。你猜怎么了?!我们可以借助Python编程语言自动化该任务,并快速轻松地获取相关论文。
今天,在本教程中,我们的目标是构建这样一个 Python 代码,只需几行代码即可在几分钟内获得所需的研究论文!我们还在等什么?让我们开始吧!
抓取 ArXiv 最新论文的代码
任何程序的第一步都是安装所有必要的模块/库并将其导入到我们的程序中。
为了抓取 ArXiv 研究论文,我们需要安装ArXiv
python 库。可以使用下面的 python 命令完成相同的操作pip
。
pip install arxiv |
接下来,让我们导入程序所需的两个模块,即 iepandas
和ArXiv
module。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 篇研究论文数据。
使用 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() |
让我们看一下我们刚刚开发的同一刮刀的另一个输出。