Python 爬取高校排名指南

在这篇文章中,我们将学习如何使用 Python 爬取高校排名的信息。这是一个实践性的项目,可以帮助你巩固对 Python 爬虫的理解。我们将分步骤进行,逐步实现目标。

整体流程

我们将这个过程分为以下几个步骤:

步骤 说明
1 确定目标网站和数据
2 安装必要的库
3 发起请求并获取网页内容
4 解析网页数据
5 提取所需信息并保存
6 数据清洗与格式化
7 完成并展示数据

详细步骤

1. 确定目标网站和数据

选择一个包含高校排名的数据的网站,例如“www.example.edu/ranking”,并确认你需要提取哪些信息。通常,我们需要信息包括高校名称、排名、得分等。

2. 安装必要的库

我们需要一些常用的库来实现爬虫,这里包括 requestsBeautifulSoup。你可以通过以下命令安装它们:

pip install requests beautifulsoup4

3. 发起请求并获取网页内容

使用 requests 库发起 HTTP 请求,获取网页内容。这段代码的作用是请求目标网页并返回 HTML 内容。

import requests  # 导入requests库

# 定义目标URL
url = '

# 发送HTTP GET请求
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    html_content = response.text  # 获取网页内容
else:
    print(f'请求失败,状态码:{response.status_code}')  # 打印错误状态码

4. 解析网页数据

使用 BeautifulSoup 解析网页内容,便于我们提取信息。以下是解析 HTML 内容的示例代码。

from bs4 import BeautifulSoup  # 导入BeautifulSoup

# 初始化BeautifulSoup,解析HTML内容
soup = BeautifulSoup(html_content, 'html.parser')

# 打印解析后的内容(可选)
print(soup.prettify())  # 美化输出

5. 提取所需信息并保存

根据网页结构提取相关的信息,例如高校名称、排名等。假设它们存储在特定的 HTML 标签中。

# 初始化一个空列表以存储高校信息
universities = []

# 找到所有包含高校信息的标签
ranking_list = soup.find_all('div', class_='ranking-entry')  # 假设高校信息在这个标签中

# 提取每个高校的相关信息
for entry in ranking_list:
    rank = entry.find('span', class_='rank').text  # 提取排名
    name = entry.find('h2', class_='university-name').text  # 提取高校名称
    score = entry.find('span', class_='score').text  # 提取得分

    # 将信息存储在字典中
    university_info = {
        'name': name,
        'rank': rank,
        'score': score
    }
    
    universities.append(university_info)  # 添加到列表中

6. 数据清洗与格式化

在提取数据后,我们可能需要清洗数据以确保数据的准确性和可用性。

# 清洗数据的示例
for uni in universities:
    uni['rank'] = int(uni['rank'])  # 将排名转换为整数
    uni['score'] = float(uni['score'])  # 将得分转换为浮点数

7. 完成并展示数据

最后,我们可以将整理好的数据打印出来,或者保存到文件中。

import json  # 导入json库

# 打印结果
for uni in universities:
    print(f"排名: {uni['rank']}, 学校: {uni['name']}, 得分: {uni['score']}")

# 将数据保存为JSON文件
with open('universities_ranking.json', 'w') as f:
    json.dump(universities, f, ensure_ascii=False, indent=4)  # 写入JSON文件

关系图

我们可以通过以下 mermaid 语法生成一个简单的关系图,展示不同部分之间的关系。

erDiagram
    UNIVERSITY {
        string name
        int rank
        float score
    }

    RANKING_DATA {
        string url
        string response
        list universities
    }

    RANKING_DATA ||--o| UNIVERSITY : contains

总结

通过这七个步骤,我们成功实现了使用 Python 进行高校排名数据的爬取、解析和存储。你现在应该能够理解每一部分的功能并能够自己动手实现。希望这些内容能够帮助你在 Python 爬虫的学习旅程中更进一步。祝你编程愉快!