设计内容:

对中国大学专业排名网站中2021年,计算机科学与技术专业,进行数据爬取和数据可视化。

URL地址:https://www.shanghairanking.cn/rankings/bcmr/2021/080901

具体实现思路如下:

1.使用requests库中的get方法获取网页源代码。

2.配合使用BeautifulSoup进行简单的网页结构数据分析及清洗,提取出该专业的前10所大学的数据(学校名称、总分)。

3.使用matplotlib库绘制柱状图

4.用sqlite3将数据写入数据库中

以下是实现后的效果图:

在编写代码之前先将所使用到的库(requests、BeautifulSoup、matplotlib、sqlite3)安装配置好所需环境

>>>pip install requests
>>>pip install bs4
>>>pip install matplotlib
>>>pip install sqlite3

环境搭建完毕后下面进入正题,上代码:

# 导入requests
import requests
# 导入BeautifulSoup
from bs4 import BeautifulSoup
# 导入matplotlib
import matplotlib.pyplot as plt
# 导入numpy
import numpy as np
# 导入sqlite3
import sqlite3

以上第一步,首先将下载好的库导入项目中。

第二步开始前我们需要对其网页html结构进行分析,在Chrome浏览器下按F12进入开发者工具,在开发者工具上方可以看到箭头一样的标识按钮,使用它可以快速跳转到指定样式的html结构内部,举个例子:

在这里我们可以得知我们需要的两个数据之一学校名称“清华大学”写在<a></a>标签内,另外我们需要的表示学校分数的数据则写在<div></div>标签内,其标签类名分别定义为:class="name-cn",class="score",在该排名榜网页中其他的学校如:“北京大学”,“浙江大学”,“哈尔滨工业大学”...等也是如此结构,在我们了解需要的数据在html中的基本结构后就可以开始了

# 发送请求,获取响应
response = requests.get('https://www.shanghairanking.cn/rankings/bcmr/2021/080901')
# 从响应中获取数据
home_page = response.content.decode(encoding='utf-8')
# 创建BeautifulSoup对象
soup = BeautifulSoup(home_page, 'lxml')
# 查找网页中的学校名称和成绩数据
school_name = soup.find_all(attrs={'class': 'name-cn'})
score = soup.find_all(attrs={'class': 'score'})
# 创建两个新的列表以便后续使用
school_name_Result = []
score_Result = []
# 遍历将爬取出来的网页数据写入一个新的列表
for i in range(15):school_name_Result.append(school_name[i].text)score_Result.append(score[i].text)
# 逆序列表
school_name_Result.reverse()
score_Result.reverse()

以上步骤首先我们通过使用requests中的get方法对该网页进行发送请求,获取响应。

随后通过response.content.decode(encoding='utf-8')从响应中获取数据,创建BeautifulSoup对象将获取到的数据传入指定解析器为lxml。

在第二步开始前我们已经进行过分析

接着通过Beautiful下的find_all方法来通过attrs来指定属性字典进行查找获取到所有类名为'name-cn'的学校名称和类名为'score'的学校分数。

最后我们通过遍历并拿到所需的排名前十五所大学的数据(学校名称、学校分数)分别保存在两个新的列表中,将两组数据按从先到后排序。

# 设置图形化界面的整体长宽大小
plt.figure(figsize=(15,10))
plt.xticks(rotation=45)  # 设置x轴显示方法
# 设置y轴最大最小值
plt.ylim(0,100)
# 传递可用参数生成可视化图形
plt.bar(school_name_Result, score_Result)
# 设置标题
plt.title("2021中国大学专业排名————计算机科学与技术")for i in range(len(school_name_Result)):plt.text(school_name_Result[i], score_Result[i], score_Result[i], ha="center")
plt.show()  # 显示创建的绘图对象

第三步调用matplotlib库初始可视化界面默认参数,设置其长宽大小,x、y轴所使用到的数据,

最后通过show()方法显示可视化界面。

在这里我们可能会出现一个问题导致无法成功运行程序

提示报错:UserWarning: Glyph 21271 (\N{CJK UNIFIED IDEOGRAPH-5317}) missing from current font.
  FigureCanvasAgg.draw(self)

这是因为matplotlib中文乱码的问题

解决这个问题有两种方案:

①将Mircosoft YaHei UI字体文件(一般在C:\Windows\Fonts路径内可以找到)添加到

自己的python安装目录\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

②添加以下代码为matplotlib库指定默认字体:

# 解决Matplotlib中文乱码问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 连接数据库,如没有则新建该数据库
con = sqlite3.connect('csData.db')
print("Open database successfully")# 在数据库对象中创建一个列表包含主键和两个属性列
stmt="CREATE TABLE if not exists SNAME(ID INT PRIMARY KEY   NOT NULL,schoolName CHAR   NOT NULL,score FLOAT   NOT NULL)"
con.execute(stmt)
print("Table created successfully")
# 创建数据库游标
cur=con.cursor()# 创建两个列表用于后续保存数据
sqlString=[]
sqlString_Result=[]# 遍历排名列表并暂时保存于新建的变量中用于传递参数
for i in rank:sc=school_name_Result[i];sr=score_Result[i]sqlString.append(i+1)sqlString.append(sc)sqlString.append(sr)# 将列表强制转换成元组changeTuple=tuple(sqlString)sqlString_Result.append(changeTuple)
# 清空字典sqlString.clear()
# 批量执行多条数据库语句
cur.executemany("insert into SNAME values(?,?,?)",sqlString_Result)
# 选中数据库SNAME中的所有数据
cur.execute("select * from SNAME")
# 遍历返回多个元组
for item in cur.fetchall():print(item)
print("Check database successfully")

最后通过Python中数据库相关的语句对sqlite3数据库进行操作,数据处理使用到了部分数据类型之间的转换,

通过上述方案即可解决。

完成以上所有步骤后程序正常运行~~~

Python网络爬虫及数据可视化(软科中国大学专业排名|计算机科学与技术)相关推荐

  1. 数据科学与大数据技术——软科中国大学专业排名

    转载于 软科 高等教育专业评价机构软科正式发布2022"软科中国大学专业排名".排名包括568个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前50%的高校,共有99 ...

  2. 网络工程——软科中国大学专业排名

    转载于 软科 高等教育专业评价机构软科正式发布2022"软科中国大学专业排名".排名包括568个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前50%的高校,共有99 ...

  3. 人工智能——软科中国大学专业排名

    转载于 软科 高等教育专业评价机构软科正式发布2022"软科中国大学专业排名".排名包括568个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前50%的高校,共有99 ...

  4. 计算机科学与技术——软科中国大学专业排名

    转载于 软科 高等教育专业评价机构软科正式发布2022"软科中国大学专业排名".排名包括568个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前50%的高校,共有99 ...

  5. 计算机科学与技术——2021软科中国大学专业排名

    转载于 软科 2021年6月22日,高等教育评价专业机构软科正式发布2021"软科中国大学专业排名".排名包括509个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前 ...

  6. 西电AI专业排名超清北,南大蝉联全国第一 | 2022软科中国大学专业排名

    金磊 发自 凹非寺 量子位 | 公众号 QbitAI 中国高校人工智能专业哪家强? 就在最近,软科中国大学专业排名新鲜出炉. 话不多说,结果直接奉上. 在此次排名中,专业评级最高的"A+&q ...

  7. 人工智能——2021软科中国大学专业排名

    转载于 软科 2021年6月22日,高等教育评价专业机构软科正式发布2021"软科中国大学专业排名".排名包括509个本科专业,每个专业榜单发布的是所有开设该专业的高校中排名位列前 ...

  8. Python爬虫入门之2022软科中国大学排名爬取保存到csv文件

    一.实验方案设计 1.获得"2022软科中国大学排名"数据,从[软科排名]2022年最新软科中国大学排名|中国最好大学排名网页中获得排名数据信息,并将数据保存到csv文件中. 2. ...

  9. 【Python网络爬虫与数据可视化实战案例】近15年的中国国内生产总值

    需求描述   打开东方财富网的中国国内数据总值数据页,进入如下页面.   现在需要把页面上的国内生产总值数据表爬取下来,写入CSV文件以持久化存储.在这之后,将CSV文件内的数据做成折线图,实现数据可 ...

最新文章

  1. jupyter qtconsole 配置文件的生成和修改
  2. mysql while 游标_mysql 游标 loop while 的使用
  3. 杨植麟:28 岁青年科学家,开挂人生的方法论
  4. 数据可视化应用案例:麦当劳和肯德基全国门店分布,谁才是分布最广的炸鸡店?
  5. l麒麟安装oracle,中标麒麟5.8x64下64bitOracle11gR2安装配置手册.docx
  6. GO标准库—命令行参数解析FLAG
  7. Mac安装docker+nginx+挂载文件详细体验
  8. 隐藏在计算机网卡怎样删除,如何卸载电脑中隐藏的虚拟网卡设备
  9. Tomcat启动设置环境变量
  10. CoreJava 笔记总结-第九章 集合
  11. slim 搭建rnn_使用Keras搭建cnn+rnn, BRNN,DRNN等模型
  12. 【OpenCV学习笔记】2.1OpenCV基本数据类型
  13. Spring MVC 3.0 RESTful controller
  14. mock方法常用框架_什么是Mock测试?
  15. hadoop2.2.0 centos6.4 编译安装详解
  16. 10.related product , up-sell product and cross-sells
  17. 申请XenCenter许可证
  18. C++入门项目——通讯管理系统
  19. 使用CSS格式化Table样式
  20. WIN7系统设置保护视力的豆沙绿过程

热门文章

  1. 全国计算机等级二级C语言上机编程题题型
  2. 深度学习 3d人脸 重建_深度学习实时3D人脸跟踪
  3. C++ 复合梯形法、复合辛普森法求解定积分
  4. 微信小程序实现电子签名并导出图片
  5. MySQL数据库有网络和无网络的部署
  6. 产品管理包括什么和什么_什么是产品管理?
  7. iis7.0介绍和完整版如何下载
  8. 滤波器原理及其作用计算机网络,什么是滤波器?滤波器原理及其作用是什么?...
  9. MapX 控件在C# 中的应用 (一)
  10. A系统单点登录B系统