python网络爬虫及数据可视化

article/2025/11/8 13:16:51

广东某学校的期末python作业 

一、设计内容及要求

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

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

设计要求:

  1. 使用requests库中的get方法获取网页。
  2. 提取出该专业的前15所大学的数据(排名、学校名称、总分),并保存到数据库。
  3. 使用matplotlib库绘制柱状图,实现数据可视化。

二、相关代码

先获取网页上类似json数据的排名、学校名称、总分

def getHTMLText(url, headers):try:r = requests.get(url=url, headers=headers, timeout=30)r.raise_for_status()r.encoding = r.apparent_encoding# soup = BeautifulSoup(r.text,"html.parser")data_json = json.loads(r.text)return data_json["data"]["rankings"]except:print("爬取失败")

下方主函数就会把headers,url;headers里的地址根据你使用的浏览器的地址是不同的,具体如何找到对应地址如下: 

 headers = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 ""(KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"}url = "https://www.shanghairanking.cn/api/pub/v1/bcmr/rank?year=2021&majorCode=080901"

打开网页后,按住F12,然后点击步骤1刷新界面,然后点击步骤2XHR,点击左边Name下方第一行,然后可以看到步骤3的URL和步骤4的user-agent了。 

获取json文件的排名、大学、总分

def get_data(jdata):rank = pd.DataFrame([i["ranking"] for i in jdata])school = pd.DataFrame([i["univNameCn"] for i in jdata])score = pd.DataFrame([i["score"] for i in jdata])df = pd.concat([rank, school, score], axis=1,)     # 按照行索引进行df.columns = ["排名", "学校名称", "总分"]return df

打印爬取数据

def printRank(uinfo,num):tplt = "{0:^10}\t{1:^10}\t{2:^10}\t"# {1:^10} 1表示位置,^表示居中,10表示占10个位置print(tplt.format("排名", "学校名称", "总分"))for i in range(num):u = uinfo.loc[i]print(tplt.format(u[0], u[1], u[2]))

写入数据库,数据库自行设置

def writeDB(uinfo,num):"""写入MySQL数据库"""# host,user,password,databasedb = pymysql.connect(host="localhost", user="root",password="123456",database="library",charset="utf8")cur = db.cursor() #开启游标功能,创建游标对象try:tplt = "{0:^10}\t{1:^10}\t{2:^10}\t"for i in range(num):u = uinfo.loc[i]sql = "INSERT INTO `school1` (rank,schoolname,score) VALUES (%s,'%s',%f)" \% (str(u[0]), str(u[1]), float(u[2]))cur.execute(sql)db.commit()except:db.rollback()  # 若发生错误则回滚cur.close()db.close()print("数据库写入成功!")

 数据可视化

def shujukeshihua():db = pymysql.connect(host="localhost", user="root", password="123456", database="library", charset="utf8")   cur = db.cursor()sqls = 'select schoolname,score from school1 '  # 创建sql指令cur.execute(sqls)  # 执行sql指令rows = cur.fetchall()print(rows)x=[]y=[]for r in rows:x.append(r[0])y.append(r[1])plt.bar(x, y, width=0.5, align="center", label="得分", color="blue")plt.title("全国前15大学专业分数情况")for a, b in zip(x, y):plt.text(a, b, b, ha='center', va="bottom", fontsize=10)plt.xlabel('大学名称')plt.ylabel('得分')plt.legend()plt.show()cur.close()# 关闭数据库连接+db.close()print("数据可视化成功!")

 主函数

if __name__ == "__main__":# info = []headers = {"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 ""(KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"}url = "https://www.shanghairanking.cn/api/pub/v1/bcmr/rank?year=2021&majorCode=080901"html = getHTMLText(url,headers)info = get_data(html)# printRank(info,15)   # 注释的内容可根据不同的函数进行调用,也可自行做个switch循环,python没有自带这个循环,需要自行编写# writeDB(info,15)# deldteDB(info,15)# shujukeshihua()

 三、相关截图

网页爬取的数据

 数据库写入的数据

数据可视化功能

补充一下放在最前面的import

import requests
import json
import pandas as pd
import pymysql
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.size'] = 8


http://chatgpt.dhexx.cn/article/xFLQ7y9n.shtml

相关文章

python网络爬虫的流程图_Python 网络爬虫程序架构及运行流程

1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息。 获取响应内容 服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)…

python网络爬虫--网页登录

1、前言 主要用到python的selenium库,通过模仿浏览器行为定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能. 2、selenium定位网页元素 关于selenium的使用前准备可以看到我之前的一篇…

python网络爬虫可以干什么,python网络爬虫有什么用

python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。什么是爬虫? (推荐学习:Python视频教程)网络爬虫(又被称为网…

python网络爬虫技术课后答案_尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案...

尔雅《Python网络爬虫技术(2020年秋季学期)》网课答案 法律的一般含义是() 答:法律是由国家创制并保证实施的行为规范 下列属于急症手术的是 答:肝破裂 脾气统摄血液的功能,实际上是()的固摄作用的体现 答:气 中国古代南北争战中&…

(一)python网络爬虫(理论+实战)——爬虫的初步认识

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

Python网络爬虫经典书籍推荐

1. Python编程:从入门到实践 - 2016 本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Python 库和工具介绍,以及…

(二)python网络爬虫(理论+实战)——爬虫分类和基本流程

小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能…

python网络爬虫实验报告_Python网络爬虫实例讲解

聊一聊Python与网络爬虫。 1、爬虫的定义 爬虫:自动抓取互联网数据的程序。 2、爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存在待爬取的URL链接,爬虫调度器调用网…

Python网络爬虫简介与环境配置

第一章 Python网络爬虫简介与环境配置 1.1 网络爬虫简介 随着互联网的快速发展越来越多的信息被发布到互联网上,这些信息被嵌入到各种各样的网页结构及样式中。虽然搜索引擎可以辅助用户搜索这些网页信息,但是通用的搜索引擎的目标是尽可能覆盖全网络&…

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先…

python爬虫简介

python爬虫是收集互联网数据的常用工具,近年来随着互联网的发展而快速发展。使用网络爬虫爬取网络数据首先要了解网络概念和主要分类,各类爬虫的系统结构、运作方式,常用策略,以及主要的应用场景,同时,出于…

python爬虫入门教程(非常详细),超级简单的Python爬虫教程

一、基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据&…

python简单实现网络爬虫

前言 在这一篇博客中,我会用python来实现一个简单的网络爬虫。简单的爬取一下一些音乐网站、小说网站的标题、关键字还有摘要!所以这个爬虫并不是万能爬,只针对符合特定规则的网站使用。(只使用于爬标题、关键字和摘要的&#xff…

【海岛吉他1】全面认识吉他谱

调号 拍号 1G 4/4 休止符:

新手小白学吉他,如何掌握基础快速入门

吉他弹唱是非常快乐,非常浪漫,非常酷的一件事。俗话说“不怕流氓有文化,就怕流氓有吉他”,大家也都知道吉他是把妹的神器。相信很多人的床底下,角落里,都扔了一把布满了灰尘的吉他,因为学不会而…

乐理: 认识吉他谱

文章目录 2019/6/20日记调式节奏与拍谱标记参考资料 2019/6/20日记 基本乐理都不会,到处搜资料太乱了,找了几个免费乐理教程先好好系统学习一下吧,不知道好不好。记录一下, 每天做题做累了看一点吧。。。 网易云公开课聆听音乐(耶鲁大大学公…

转自知乎的吉他学习篇

iPhone Android 错过这篇,你可能这辈子都学不会弹吉他了(多图) 图片:《醉乡民谣》 零基础如何自学吉他? 梁策, 非阴谋论者/产品经理/吉他爱好者 错过这篇文章,你可能这辈子都学不会弹吉他了。 …

新手入门吉他推荐,第一把吉他从这十款选绝不踩雷!初学者吉他选购指南【新手必看】#VEAZEN费森#雅马哈#卡马

一、新手购琴注意事项: 1、预算范围 一把合适的吉他对于初学者来说会拥有一个很好的音乐启蒙。选一款性价比高,做工材料、音质和手感相对较好的吉他自然不会是一件吃亏的事。**初学者第一把琴的预算,我觉得最低标准也是要在500元起&#xf…

学吉他该如何科学背谱?

相信对于很多正在学习或者技巧纯熟的吉他手来说,背谱都是一个难题。你可能会说,背谱,背就完事了。但是实际上,对于高手来说,背诵一个乐谱可能都得花十几个小时,对于新手而言,背诵的时间可能是高…