首页 > 编程语言 >学习了 python的数据爬取以及数据的可视化。

学习了 python的数据爬取以及数据的可视化。

时间:2023-05-10 19:55:05浏览次数:40  
标签:count break plt python 爬取 可视化 year print select

  Python中国大学排名数据分析与可视化;

【源代码程序】

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
from matplotlib import pyplot as plt
def get_rank(url):
    count = 0
    rank = []
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 Edg/101.0.1210.3"
    }
    resp = requests.get(url, headers=headers).content.decode()
    soup = bs(resp, "lxml")
    univname = soup.find_all('a', class_="name-cn")
    for i in univname:
        if count != 10:
            university = i.text.replace(" ", "")
            score = soup.select("#content-box > div.rk-table-box > table > tbody > tr:nth-child({}) > td:nth-child(5)"
                                .format(count + 1))[0].text.strip()
            rank.append([university, score])
        else:
            break
        count += 1
    return rank


total = []
u_year = 2015
for i in range(15, 20):
    url = "https://www.shanghairanking.cn/rankings/bcur/20{}11".format(i)
    print(url)
    title = ['学校名称', '总分']
    df = pd.DataFrame(get_rank(url), columns=title)
    total.append(df)
for i in total:
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    x = list(i["学校名称"])[::-1]
    y = list(i["总分"])[::-1]
    # 1.创建画布
    plt.figure(figsize=(20, 8), dpi=100)
    # 2.绘制图像
    plt.plot(x, y, label="大学排名")
    # 2.2 添加网格显示
    plt.grid(True, linestyle="--", alpha=0.5)
    # 2.3 添加描述信息
    plt.xlabel("大学名称")
    plt.ylabel("总分")
    plt.title(str(u_year) + "年软科中国最好大学排名Top10", fontsize=20)
    # 2.5 添加图例
    plt.legend(loc="best")
    # 3.图像显示
    plt.savefig(str(u_year)+".png")
    plt.show()

    u_year += 1

while True:
    info = input("请输入要查询的大学名称和年份:")
    count = 0
    university, year = info.split()
    year = int(year)
    judge = 2019 - year
    tmp = total[::-1]
    if 4 >= judge >= 0:
        name = list(total[judge - 1]["学校名称"])
        for j in name:
            if university == j:
                print(university + "在{0}年排名第{1}".format(year, count + 1))
                break
            count += 1
        if count ==10:
            print("很抱歉,没有该学校的排名记录!!!")
            print("请选择以下选项:")
            print("   1.继续查询")
            print("   2.结束查询")
            select = int(input(""))

            if select == 1:
                continue
            elif select == 2:
                break
        else:
            break
    else:
        print("很抱歉,没有该年份的排名记录!!!")
        print("请选择以下选项:")
        print("   1.继续查询")
        print("   2.结束查询")
        select = int(input(""))

        if select == 1:
            continue
        elif select == 2:
            break

运行截图:

 

 

标签:count,break,plt,python,爬取,可视化,year,print,select
From: https://www.cnblogs.com/jizhaosai/p/17389161.html

相关文章

  • 008 python get请求后得到的json字符串解析为pythn字典
    importjsonimportrequests#r=requests.get('https://www.baidu.com')#最基本的不带参数的get请求response=requests.get(url='http://xxx.xxx.xxx.cn:8120/api/Product/GetProductInfoList',\params={'packageNo'......
  • python基础学习-if-while-for-input-print
    """字符串格式化:方式2:f“{变量/表达式}{变量/表达式}”不理会类型,不做精度控制方式1:”%占位“%(变量/表达式)包括(%d%f%s)%m.nm控制显示位数,n控制精度小数点后几位,四舍五入"""name="家和"age=20print(f"我是{name},我{age}岁了")"""inp......
  • python基础学习-JSON
    """JSON:轻量级数据交互格式本质上是带有特定格式的字符串主要功能:在各种编译语言流通的数据格式,负责不同编译语言之间的数据传递和交互中转数据格式格式:{"name":"admin","age":18}字典或[{"name":"admin","age":18},{"name":"admin",&quo......
  • python基础学习-模块导入
    """一模块导入:[from模块名]import[模块|类|变量|函数|*][as别名]常用:import模块名from模块名import方法|类|变量from模块名import*import模块名as别名from模块名import功能名as别名如果模块中有_all_变量,当使用fromxxximport*导入时,只能......
  • python基础学习-列表
    """数据容器""""""列表:list#字面量[元素1,元素2,元素3]#定义变量变量名称=[元素1,元素2,元素3]#定义空列表变量名称=[]变量名称=list()#列表可以存储多个数据,且可以为不同的数据类型,支持嵌套my_list=[1,[2,3],4]下标索引,从0开始my_list=["it","my",34,......
  • python基础学习-序列-切片
    """序列:连续,有序,可使用下标索引的数据容器列表,元组,字符串切片:序列:[起始下标:结束下标:步长]起始留空,从0,结束留空,截至到尾,不含结束下标步长为1,一个个取,可省步长为2,跳一个元素取步长为n,跳n-1个元素取取最后一个元素,下标为-1element=my_list[-1]等同于序列反转result=my_l......
  • python基础学习-字符串
    """str字符串下标索引,从0开始my_str="hello"my_str[0]取"h"可以反向索引,从后往前,从-1开始,一次递减my_str[-1]取o不可修改的数据容器方法:1.查找某元素下标字符串.index(字符串)2.字符串替换新字符串=字符串.replace(字符串1,字符串2)字符串2替换字符串1,字符......
  • python基础学习-集合
    """集合:无序,不允许重复,不支持下标索引,允许修改#字面量{元素1,元素2,元素3}#定义变量变量名称={元素1,元素2,元素3}#定义空集合变量名称=set()方法:1.添加新元素集合.add(元素)2.移除元素集合.remove(元素)3.随机取出元素element=集合.pop()4.清空......
  • python基础学习-元组
    """元组:一旦定义完成,不可修改需要在程序中封装数据,但不希望数据被篡改,使用元组同列表#字面量(元素1,元素2,元素3)#定义变量变量名称=(元素1,元素2,元素3)#定义空列表变量名称=()变量名称=tuple()元组可以存储多个数据,且可以为不同的数据类型,支持嵌套my_list=(1,(......
  • python基础
    python基础python介绍Python来源Pythonlogo:Pythonauthor:GuidovanRossumABC—>Python《TheMontyPython》—>Pythonpython语言特点简单易学、明确优雅、开发速度快跨平台、可移植、可扩展、交互式、解释型、面向对象的动态语言“内置电池”,大量的标准库和第三方......