数据科学与计算:爬虫和数据分析案例笔记

案例 1:中国大学排名爬取与分析

一、任务描述

目标:爬取高三网中国大学排名一览表,提取学校名称、总分、全国排名、星级排名、办学层级等数据,并保存为 CSV 文件。

网址:2021中国的大学排名一览表_高三网

二、任务分析

数据来源:网页中的表格数据,包含 “名次”“学校名称”“总分”“全国排名”“星级排名”“办学层次” 等字段。

网页结构:数据嵌套在table > tbody > tr标签中,需通过解析 HTML 提取表格行数据。

三、代码实现

1. 核心库导入

python

运行

import requests  # 发送HTTP请求
from bs4 import BeautifulSoup  # 解析HTML
import csv  # 处理CSV文件
2. 功能函数

获取网页内容(get_html)

python

运行

def get_html(url, time=3):try:r = requests.get(url, timeout=time)  # 发送GET请求r.encoding = r.apparent_encoding  # 自动识别编码r.raise_for_status()  # 状态码非200时抛出异常return r.text  # 返回网页文本except Exception as error:print(error)
  • 解析网页数据(parser)

    python

    运行

    def parser(html):soup = BeautifulSoup(html, "lxml")  # 解析HTMLout_list = []for row in soup.select("table>tbody>tr"):  # 遍历表格行td_html = row.select("td")  # 获取单元格row_data = [td_html[1].text.strip(),  # 学校名称td_html[2].text.strip(),  # 总分td_html[3].text.strip(),  # 全国排名td_html[4].text.strip(),  # 星级排名td_html[5].text.strip()   # 办学层次]out_list.append(row_data)return out_list
    
  • 保存为 CSV 文件(save_csv)

    python

    运行

    def save_csv(item, path):with open(path, "wt", newline="", encoding="utf-8") as f:csv_write = csv.writer(f)csv_write.writerows(item)  # 写入多行数据
    
3. 主程序

python

运行

if __name__ == "__main__":url = "http://www.bspider.top/gaosan/"html = get_html(url)  # 获取网页out_list = parser(html)  # 解析数据save_csv(out_list, "school.csv")  # 保存文件

四、数据预处理(处理缺失值)

针对 “总分” 列的空数据,使用 pandas 处理:

  1. 删除含空字段的行

    python

    运行

    import pandas as pd
    df = pd.read_csv("school.csv")
    new_df = df.dropna()  # 删除缺失值所在行
    print(new_df.to_string())
    
  2. 用指定内容替换空字段

    python

    运行

    df.fillna("暂无分数信息", inplace=True)  # 替换缺失值为指定文本
    
  3. 用均值替换空字段

    python

    运行

    x = df["总分"].mean()  # 计算均值
    df["总分"].fillna(x, inplace=True)  # 填充缺失值
    
  4. 用中位数替换空字段

    python

    运行

    x = df["总分"].median()  # 计算中位数
    df["总分"].fillna(x, inplace=True)  # 填充缺失值
    

五、数据分析与可视化

1. 数据概况

共 820 所学校,按星级分布:8 星(8 所)、7 星(16 所)、6 星(36 所)、5 星(59 所)、4 星(103 所)、3 星(190 所)、2 星(148 所)、1 星(260 所)。

2. 可视化图表

柱形图(横向 / 纵向)

python

运行

import matplotlib.pyplot as plt
import numpy as npx = np.array(["8星","7星","6星","5星","4星","3星","2星","1星"])
y = np.array([8, 16, 36, 59, 103, 190, 148, 260])plt.title("不同星级的学校个数")
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 显示中文
plt.bar(x, y)  # 纵向柱形图
# plt.barh(x, y)  # 横向柱形图
plt.show()
  • 饼图(占比分布)

    python

    运行

    y = np.array([1, 2, 4.5, 7.2, 12.5, 23.1, 18, 31.7])  # 各星级占比(%)
    plt.pie(y, labels=["8星","7星","6星","5星","4星","3星","2星","1星"])
    plt.title("不同星级的学校个数占比")
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.show()
    

六、总结

  1. 案例完整展示了 “爬虫获取数据→预处理清洗→可视化分析” 的流程。
  2. 核心技术:requests 爬虫、BeautifulSoup 解析、pandas 数据处理、matplotlib 可视化。
  3. 应用场景:通过结构化数据提取与分析,直观呈现大学排名的分布特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95592.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华测科技的3D GPR数据分析

很高兴得到了张总的支持,获得了他们雷达的数据,并写了雷达数据读取和转换文件。1 背景搜索后发现华测实力很强,因为他们可达到100km/h的时速,以前我只知道中电众益可以达到这个速度。2数据格式分析2.1 华测数据因为长时间不编程&a…

最长链(二叉树直径DFS)

题目描述现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根。输入第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N。 接下来N行,这N行中的第i行包含两个正整数l[i]…

802.11 Wi-Fi 竞争机制深度分析:CSMA/CA 与 DCF

802.11 Wi-Fi 竞争机制深度分析:CSMA/CA 与 DCF 一、核心机制:CSMA/CA(载波侦听多路访问/冲突避免) 传统以太网使用 CSMA/CD(冲突检测),但无线环境中无法实现冲突检测,因此802.11采用…

【Go语言-Day 36】构建专业命令行工具:`flag` 包入门与实战

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

C语言——深入理解指针(四)

C语言——深入理解指针(四) 数组名的意义sizeof(数组名),且数组名单独放在sizeof内部,则这里的数组名表示整个数组,计算的是整个数组的大小&数组名,这里的数组名表示的是整个数组…

LeetCode 刷题【42. 接雨水】

42. 接雨水 自己做 解&#xff1a;双指针左右分割容器 class Solution { public:int trap(vector<int>& height) {int res 0;int len height.size();if(len < 2) //构不成一个容器了&#xff0c;直接返回return res;int end len - 1; //右边界int…

网络的基本概念、通信原理以及网络安全问题

目录 1、 什么是网络&#xff1f; &#xff08;1&#xff09;网络的概念与本质 &#xff08;2&#xff09;电压信号的合并与抵消 &#xff08;3&#xff09;电压的本质 2、中转设备 &#xff08;1&#xff09;背景 &#xff08;2&#xff09;中转设备的处理能力与编程能…

Windows下使用WSL2创建Ubuntu子系统(更改安装位置与启动图形桌面)

Windows下使用WSL2创建Ubuntu子系统&#xff08;更改安装位置与启动图形桌面&#xff09; 本文介绍如何使用WSL2创建Ubuntu子系统&#xff0c;并更改安装位置到其他磁盘&#xff0c;并启动图形桌面Xfce4。 WSL 版本: 2.5.7.0 系统版本: Windows11 23H2 相关工具&#xff1a;Mo…

时间泄漏 TemporalLeakage

时间泄漏 TemporalLeakage: 就是后续有事件发生&#xff0c;然后才有了这个结果&#xff0c;但是在该事件发生之前&#xff0c;不应该预测该结果。 Temporal Leakage 问题是往往导致纵向Planning不“果断”。 解决方案&#xff1a;人工标注出时间发生的时刻 真值只监督时间发生…

独立书店数字化转型:绝版书修复档案系统与读者阅读行为分析营销平台

在电商冲击与阅读习惯变迁的双重压力下&#xff0c;独立书店正遭遇 “旧书修复难、新书卖不动” 的生存困境。传统模式中&#xff0c;绝版书修复依赖老师傅经验&#xff0c;单本修复周期长达 2 周&#xff0c;损耗率超 30%&#xff1b;营销缺乏数据支撑&#xff0c;导致客流年均…

const修饰指针用法详解

目录 一、const修饰变量 绕过const限制的问题 二、const修饰指针变量 1、无const修饰的指针 2、const放在*左边 3、const放在*右边 4、*两边都有const 三、使用建议 四、记忆技巧 一、const修饰变量 在C语言中&#xff0c;变量默认是可修改的。如果我们希望某个变量不能…

pcl法线估计的踩坑

1&#xff0c;normalestimation对点云法线的评估&#xff0c;只输出法线向量&#xff0c;并不输出xyz值。如果输出类型是pointnormal&#xff0c;那么这点云的法向量有值&#xff0c;xyz值都是02&#xff0c;添加点云xyz数据。可以使用 pcl::concatenatefields(*a,*b,*c)函数p…

利用Minicsv库解析csv文件的c程序及读入测试

上午的c程序写入xlsx较快但不正确&#xff0c;python程序虽正确但过慢。所以找了一个全部源程序加起来不到4K字节的C语言csv解析库Minicsv&#xff0c;来改写&#xff0c;改写结果如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h…

企微用户部门同步HRS系统

企微用户导入HR系统流程说明 概述 本文档详细说明了WechatUserImportServiceImpl.importWechatUsersToHrs()方法的业务流程和实现逻辑。该方法负责将企业微信用户数据同步导入到HR管理系统中&#xff0c;包括员工信息、工作信息和任职记录的创建与更新。 主要功能 数据同步…

告别传统SEO!拥抱下一代流量密码:生成式引擎优化(GEO)实战指南

前言&#xff1a;为什么你的“最佳实践”SEO正在失效&#xff1f;你是否发现&#xff0c;即使严格遵循了谷歌自2019年以来的所有“最佳实践”&#xff0c;你的技术博客或产品文档的流量依旧增长乏力&#xff0c;甚至不升反降&#xff1f;你不是一个人。问题在于&#xff0c;游戏…

week1-[一维数组]传送

week1-[一维数组]传送 题目描述 有 nnn 个传送门&#xff0c;从第 iii 个传送门进去后会被传送到第 aia_iai​ 个传送门&#xff0c;进而被传送到第 aaia_{a_i}aai​​ 个传送门&#xff0c;如此一直下去……小 A 想知道从第 kkk 个传送门进去后&#xff0c;能不能回到第 kkk 个…

【18】目心智能——目心智能 嵌入式一面 ,校招,面试问答记录

目心智能——目心智能 嵌入式一面 &#xff0c;校招&#xff0c;面试问答记录 1 简单自我介绍2 你做了这么多算法&#xff0c;为什么不找算法的&#xff1f;3 我们主要还是软件开发&#xff0c;不做结构设计4 模电知识6 CSDN应该附链接在简历上&#xff0c;稍后发给我&#xff…

C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏

快递运费计算器帮一家快递站点开发一个快递运费计算器&#xff0c;快递站点人员只需要输入包裹重量和地点编号即可计算出对应的运费。假设快递费计算规则如下&#xff1a;首重&#xff1a;3公斤 3公斤以内&#xff1a;1.东三省/宁夏/青海/海南&#xff1a;12元&#xff0c;2.新…

网络安全蓝队常用工具全景与实战指南

摘要 在现代信息系统的安全防护中&#xff0c;蓝队承担着防御、检测、响应和持续改进的核心职责。要实现高效、可持续的防御能力&#xff0c;蓝队需要一整套成熟、可靠的工具集来进行威胁情报收集、日志分析、入侵检测、漏洞评估、端点防护、网络流量监控、事件响应与取证等工作…

基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储

引言在电子商务领域&#xff0c;实时数据处理能力已成为企业核心竞争力的重要组成部分。淘宝作为中国领先的电商平台&#xff0c;每天产生海量的商品数据&#xff0c;这些数据需要被实时处理、分析并分发到各种存储系统中&#xff0c;以支持搜索、推荐、库存管理等关键业务。本…