Python动态柱状图图表可视化:历年软科中国大学排行!

本来想参照: https://mp.weixin.qq.com/s/e7Wd7aEatcLFGgJUDkg-EQ 搞一个往年编程语言动态图的,奈何找不到数据,有数据来源的欢迎在评论区留言。

这里找到了一个,是2020年6月的编程语言排行,供大家看一下: https://www.tiobe.com/tiobe-index/

我们要实现的效果是:

大学排名来源: http://www.zuihaodaxue.com/ARWU2003.html

部分截图:

在http://www.zuihaodaxue.com/ARWU2003.html中的年份可以选择,我们解析的页面就有了:

"http://www.zuihaodaxue.com/ARWU%s.html" % str(year)

初步获取页面的html信息的代码:

def get_one_page(year):
    try:
        headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
            }
        url = "http://www.zuihaodaxue.com/ARWU%s.html" % str(year)
        response=requests.get(url,headers=headers)
        if response.status_code == 200:
            return response.content
    except RequestException:
        print('爬取失败')

我们在页面上进行检查:

数据是存储在表格中的,这样我们就可以利用pandas获取html中的数据,基本语法:

tb = pd.read_html(url)[num]

其中的num是标识网页中的第几个表格,这里只有一个表格,所以标识为0。初步的解析代码就有了:

def parse_on_page(html,i):
    tb=pd.read_html(html)[0]
    return tb

我们还要将爬取下来的数据存储到csv文件中,基本代码如下:

def save_csv(tb):
    start_time=time.time()
    tb.to_csv(r'university.csv', mode='a', encoding='utf_8_sig', header=True, index=0)
    endtime = time.time()-start_time
    print('程序运行了%.2f秒' %endtime)

最后是一个主函数,别忘了还有需要导入的包:

import requests
from requests.exceptions import RequestException
import pandas as pd
import time
def main(year):
    for i in range(2003,year):
        html=get_one_page(i)
        tb=parse_on_page(html,i)
        #print(tb)
        save_csv(tb)
if __name__ == "__main__":
    main(2004)

运行之后,我们在同级目录下就可以看到university.csv,部分内容如下:

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值