当前位置:首页>python>python自动化系列:从CNUR网站爬取前500所高校数据并生成带图报表

python自动化系列:从CNUR网站爬取前500所高校数据并生成带图报表

  • 2026-10-11 08:06:40
python自动化系列:从CNUR网站爬取前500所高校数据并生成带图报表
作品介绍
作品名称:从CNUR网站爬取前500所高校数据并生成带图报表
用到的库:requests、bs4、pandas、matplotlib、openpyxl、io
作品简介:该实例从 CNUR 网站上爬取前 500 所高校的排名数据,进行简单的数据处理和统计分析,并生成一个包含统计数据和柱状图的 Excel 文件。该代码提供了一个完整的解决方案,能够高效地从网页抓取特定格式的数据,对其进行分析,并生成直观易懂的可视化报告。非常适合用于教育机构、研究团队或者个人学习 Python 数据处理与可视化的参考案例。

实现过程

一、导入必要的库

import requestsfrom bs4 import BeautifulSoupimport pandas as pdimport matplotlib.pyplot as pltfrom openpyxl import load_workbookfrom openpyxl.drawing.image import Image as XLImagefrom io import BytesIO
      二、主程序
      1. 网页内容抓取:

        • 使用 requests 库发送 HTTP 请求获取目标网页的内容。
        • 使用 BeautifulSoup 解析 HTML 内容,定位到包含大学排名信息的表格。
      2. 数据提取与清理:

        • 遍历表格中的每一行(<tr>),并从每个单元格(<td>)中提取文本内容。
        • 提取出的数据存储在一个列表中,其中每个元素代表一行数据(即一所大学的信息)。
        • 去掉表头行之后,只保留前 500 条记录。
      3. 数据转换与保存:

        • 将提取的数据转换为 pandas.DataFrame 格式,便于后续的数据处理和分析。
        • 将 DataFrame 数据保存至 Excel 文件的一个工作表(Sheet)中,命名为“大学排名”。
      4. 数据分析与可视化:

        • 对“省份”字段进行计数统计,了解各省份的大学分布情况。
        • 使用 matplotlib 库生成柱状图,展示不同省份的大学数量分布。
        • 设置图表参数以支持中文显示,并调整图表布局使其美观清晰。
      5. 图表插入Excel:

        • 将生成的柱状图保存为 PNG 格式的图像流。
        • 使用 openpyxl 库将图像插入到 Excel 文件中的另一个工作表(Sheet)“省份分布”的指定位置(如 D2 单元格)。
        • 最终保存 Excel 文件,确保所有数据和图表都被正确写入。
      # 目标网页URLurl = "https://www.cnur.com/rankings/2230.html"# 发送请求获取网页内容response = requests.get(url)if response.status_code != 200:    print(f"Failed to retrieve the webpage. Status code: {response.status_code}")else:    # 使用BeautifulSoup解析HTML内容    soup = BeautifulSoup(response.content, 'html.parser')    # 查找第一个表格    table = soup.find('table')    universities = []    if table:        rows = table.find_all('tr')        for row in rows:            cols = row.find_all('td')            cols = [ele.text.strip() for ele in cols]            if cols:                universities.append(cols)    # 提取前500条    header = universities[0] if universities and len(universities[0]) > 0 else []    top_500 = universities[1:501]    # 转换为DataFrame    df = pd.DataFrame(top_500, columns=header)    # 统计各省大学数量    province_counts = df['省份'].value_counts()    # 创建包含统计数据的DataFrame    stats_df = province_counts.reset_index()    stats_df.columns = ['省份', '数量']    # 保存主数据和统计信息到Excel    output_file = "前500大学排名.xlsx"    with pd.ExcelWriter(output_file, engine='openpyxl') as writer:        df.to_excel(writer, index=False, sheet_name='大学排名')        stats_df.to_excel(writer, index=False, sheet_name='省份分布', startcol=0, startrow=0)    print(f"\n✅ 数据已成功保存到文件:{output_file}")    # 生成柱状图并保存为临时图像    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文    plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号    plt.figure(figsize=(8, 5))    province_counts.plot(kind='bar', color='skyblue')    plt.title('前500名大学各省分布')    plt.xlabel('省份')    plt.ylabel('大学数量')    plt.xticks(rotation=45)    plt.tight_layout()    # 将图像保存到内存(BytesIO)    img_data = BytesIO()    plt.savefig(img_data, format='png')    plt.close()    # 插入图像到 Excel 中    wb = load_workbook(output_file)    ws = wb['省份分布']    # 将图表图像写入Excel(从列D开始、行2开始)    img = XLImage(img_data)    ws.add_image(img, 'D2')    # 保存Excel    wb.save(output_file)    print("✅ 柱状图已成功插入到Excel文件中。")
        三、结语

        以上就是本次分享的全部内容,如果你有任何疑问或想要分享的经验,评论区永远为你敞开。你的每一个点赞和转发,都是对我们最大的支持和鼓励!

        再次感谢你的阅读,期待在下一次分享中与你相见!

        精选阅读

        python自动化系列:自动屏幕截图工具

        python自动化系列:实现一个简单的网络监控工具

        python自动化系列:自动抓取网站文章的工具(有知有行-E大)

        python自动化系列:一键批量导出Excel工作表为图片,简化报告制作流程

        python自动化系列:基于Excel数据自动生成员工工资调整通知

        python自动化系列:轻松找出两份word文档的细微差别
        python自动化系列:如何使用Python轻松调整视频分辨率至720p
        python自动化系列:使用 Pandas 将制表符分隔的文本文件转换为 Excel 文件
        python自动化系列:如何批量筛选Excel文件中的“销售数量”数据
        python自动化系列:深入Excel数据验证与清洗(行)
        python自动化系列:自动化文件备份,守护数据安全的定时任务
        python自动化系列:利用Python实现电费通知单自动化生成-高效、精准、个性化
        python自动化系列:每天定时提醒员工离职日期,助力人力资源管理

        python自动化系列:从DAT到图片-轻松恢复微信聊天记录中的丢失照片

        python自动化系列:轻松合并多个Excel文件中的数据

        python自动化系列:轻松获取百度热搜Top20条数据

        python自动化系列:批量重命名多个 Excel 文件中的工作表

        python自动化系列:批量合并文件夹内所有Excel工作簿中指定名称的工作表

        python自动化系列:Python助力Excel数据高效拆分与整理

        python自动化系列:批量将图片转换为PNG格式

        python自动化系列:实现Word文档到PDF格式的批量转换过程

        python自动化系列:查找大文件的Python脚本,轻松管理磁盘空间

        python自动化系列:轻松将图片批量转换为PDF,图文教程+源码分享

        python自动化系列:实现递归批量重命名目录及子目录中的图片文件

        python自动化系列:监控指定的Excel文件并在其内容发生变化时同步更新到txt文件

        python自动化系列:实现每周日凌晨 2 点自动清理指定文件夹缓存文件

        python自动化系列:批量为图片添加边框

        python自动化系列:批量修改Word文档中“编程起航”的文本格式

        python自动化系列:批量筛选并整合Excel文件中的“钱包”销售记录

        最新文章

        随机文章