📜  使用 Python 从 NSF 中提取数据 (1)

📅  最后修改于: 2023-12-03 15:22:15.820000             🧑  作者: Mango

使用 Python 从 NSF 中提取数据

美国国家科学基金会(NSF)是美国主要的基础研究资助机构之一,其资助的研究项目涉及多个领域。为了让研究者更方便地获取和利用 NS 基金的研究数据,我们可以使用 Python 编程语言编写代码从 NSF 网站中提取所需数据。这里将介绍如何使用 Python 从 NSF 中提取数据。

准备工作

在开始编写代码之前,我们需要做一些准备工作:

  1. 安装 Python 程序。

可以从 Python 官网上下载并安装 Python 程序。推荐安装 Python3 版本。

  1. 安装所需的 Python 库。

使用以下命令可以安装所需的 Python 库:

pip install requests
pip install pandas
pip install beautifulsoup4

其中,requests 库用于获取网站内容;pandas 库用于处理数据;beautifulsoup4 库用于解析 HTML 网页。

代码实现

以下是使用 Python 从 NSF 中提取数据的示例代码:

import requests
import pandas as pd
from bs4 import BeautifulSoup

NSF_URL = 'https://www.nsf.gov/awardsearch/showAward'

def extract_data(query):
    response = requests.get(NSF_URL, params=query)
    soup = BeautifulSoup(response.content, 'html.parser')

    data_dict = {}
    tables = soup.select('table')
    for table in tables:
        for row in table.select('tr'):
            cols = row.select('td')
            if cols:
                data_dict[cols[0].get_text()] = cols[1].get_text().strip()

    return pd.Series(data_dict)

query = {
        'AwardNumber': '2039652',
        'HistoricalAwards': 'false'
    }

data = extract_data(query)
print(data)
代码说明

代码中,首先定义了 NSF 网站的 URL,即 NSF_URL。然后定义了一个 extract_data 函数,该函数接受一个查询参数 query,然后使用 requests 库从 NSF 网站获取相应的页面内容。接着使用 BeautifulSoup 库解析 HTML,提取所需的数据。函数最后返回提取到的数据,格式为 pandas.Series 类型。

接下来我们使用一个示例查询参数 query 来调用 extract_data 函数,并将返回的数据打印输出。

运行代码后会输出以下内容:

Award Title                                        A Collaborative  Platform to Model the Evolution of the Cyber Ecology Over the  Next Decade
Award Effective Date                               August 15, 2020
Award Expiration Date                              July 31, 2022
Award Amount                                       $1,199,996
Abstract                                           The proposed project is to develop a collaborative  platform, CyberCollaborate+,  to ...

以上就是使用 Python 从 NSF 中提取数据的示例代码。我们可以根据自己的需求修改代码中的查询参数来获取不同的数据。