Python 爬取高校排名指南
在这篇文章中,我们将学习如何使用 Python 爬取高校排名的信息。这是一个实践性的项目,可以帮助你巩固对 Python 爬虫的理解。我们将分步骤进行,逐步实现目标。
整体流程
我们将这个过程分为以下几个步骤:
步骤 | 说明 |
---|---|
1 | 确定目标网站和数据 |
2 | 安装必要的库 |
3 | 发起请求并获取网页内容 |
4 | 解析网页数据 |
5 | 提取所需信息并保存 |
6 | 数据清洗与格式化 |
7 | 完成并展示数据 |
详细步骤
1. 确定目标网站和数据
选择一个包含高校排名的数据的网站,例如“www.example.edu/ranking”,并确认你需要提取哪些信息。通常,我们需要信息包括高校名称、排名、得分等。
2. 安装必要的库
我们需要一些常用的库来实现爬虫,这里包括 requests
和 BeautifulSoup
。你可以通过以下命令安装它们:
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 爬虫的学习旅程中更进一步。祝你编程愉快!