



实现过程
一、导入必要的库
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
网页内容抓取:
requests 库发送 HTTP 请求获取目标网页的内容。BeautifulSoup 解析 HTML 内容,定位到包含大学排名信息的表格。数据提取与清理:
<tr>),并从每个单元格(<td>)中提取文本内容。数据转换与保存:
pandas.DataFrame 格式,便于后续的数据处理和分析。数据分析与可视化:
matplotlib 库生成柱状图,展示不同省份的大学数量分布。图表插入Excel:
openpyxl 库将图像插入到 Excel 文件中的另一个工作表(Sheet)“省份分布”的指定位置(如 D2 单元格)。# 目标网页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]# 转换为DataFramedf = pd.DataFrame(top_500, columns=header)# 统计各省大学数量province_counts = df['省份'].value_counts()# 创建包含统计数据的DataFramestats_df = province_counts.reset_index()stats_df.columns = ['省份', '数量']# 保存主数据和统计信息到Exceloutput_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')# 保存Excelwb.save(output_file)print("✅ 柱状图已成功插入到Excel文件中。")
以上就是本次分享的全部内容,如果你有任何疑问或想要分享的经验,评论区永远为你敞开。你的每一个点赞和转发,都是对我们最大的支持和鼓励!
再次感谢你的阅读,期待在下一次分享中与你相见!
精选阅读
python自动化系列:自动抓取网站文章的工具(有知有行-E大)
python自动化系列:一键批量导出Excel工作表为图片,简化报告制作流程
python自动化系列:基于Excel数据自动生成员工工资调整通知
python自动化系列:从DAT到图片-轻松恢复微信聊天记录中的丢失照片
python自动化系列:批量重命名多个 Excel 文件中的工作表
python自动化系列:批量合并文件夹内所有Excel工作簿中指定名称的工作表
python自动化系列:Python助力Excel数据高效拆分与整理
python自动化系列:实现Word文档到PDF格式的批量转换过程
python自动化系列:查找大文件的Python脚本,轻松管理磁盘空间
python自动化系列:轻松将图片批量转换为PDF,图文教程+源码分享
python自动化系列:实现递归批量重命名目录及子目录中的图片文件
python自动化系列:监控指定的Excel文件并在其内容发生变化时同步更新到txt文件
python自动化系列:实现每周日凌晨 2 点自动清理指定文件夹缓存文件