python爬虫 2021中国大学排名定向爬虫

最近的几篇博客来源是之前我下载的一个课件 

在网上搜索了一下是一下这个课程的,可以结合视频博客以及代码去更好地学习

Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课) (icourse163.org)

但是课程内容的案列已经很久了,很多网址已更新或者网络框架已经更新

“中国大学排名定向爬虫”实例介绍
最好大学网:【软科排名】2021年最新软科中国大学排名|中国最好大学排名 (shanghairanking.cn)
功能描述
输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名,大学名称,总分)
技术路线:requestsbs4
定向爬虫:仅对输入URL进行爬取,不扩展爬取

python爬虫 2021中国大学排名定向爬虫_第1张图片
程序的结构设计
步骤1:从网络上获取大学排名网页内容 getHTMLText()
步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()
步骤3:利用数据结构展示并输出结果 printUnivList()

可参考下列步骤,可以成功爬取到你想要的数据

1、进入 网址 ,可参考的下面的步骤,找到这些信息存储的地方:

python爬虫 2021中国大学排名定向爬虫_第2张图片

2、在浏览器输入网址 :https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2020

参考博客python爬虫小案例_中国大学排名(2021.04.11)_不祈求 ~ ~-CSDN博客

看到数据是json格式

import requests
from bs4 import BeautifulSoup
import bs4
import json
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
url='https://www.shanghairanking.cn/api/pub/v1/bcur?bcur_type=11&year=2021'
def getHTMLText(url):
    '''从网络上获取大学排名网页内容'''
    try:
        r = requests.get(url, headers=headers,timeout=40) 
        # #如果状态不是200,就会引发HTTPError异常
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
def fillUnivList(text, num):
    # response = requests.get(url, timeout=40)
    # text = response.text
    data = json.loads(text)
    content = data['data']['rankings']
    ulist = []
    for i in range(num):
        index = content[i]['rankOverall']
        name = content[i]['univNameCn']
        score = content[i]['score']
        category = content[i]['univCategory']
        ulist.append([index, name, score, category])
    return ulist
def printUnivList(ulist):
    # 打印前 num 名的大学
    #tplt ="{0:^10}\t{1:^10}\t{2:^10}\t{3:^10}"
    tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}\t{4:^10}"   # {1:{3}^10} 中的 {3} 代表取第三个参数
    print(tplt.format("排名 ", "学校名称", "总分", chr(12288), "类型"))  # chr(12288) 代表中文空格
    for i in range(100):
        u = ulist[i]
        # chr(12288) 代表中文空格
        print(tplt.format(u[0], u[1], u[2], chr(12288), u[3]))
if __name__ == '__main__':
    text=getHTMLText(url)
    ulist=fillUnivList(text, 100)
    printUnivList(ulist)
    
 排名     	   学校名称   	    总分    	    类型    
    1     	   清华大学   	  969.2   	    综合    
    2     	   北京大学   	  855.3   	    综合    
    3     	   浙江大学   	  768.7   	    综合    
    4     	  上海交通大学  	  723.4   	    综合    
    5     	   南京大学   	  654.8   	    综合    
    6     	   复旦大学   	  649.7   	    综合    
    7     	 中国科学技术大学 	   577    	    理工    
    8     	  华中科技大学  	  574.3   	    综合    
    9     	   武汉大学   	  567.9   	    综合    
    10    	  西安交通大学  	  537.9   	    综合    
    11    	 哈尔滨工业大学  	  522.6   	    理工    
    12    	   中山大学   	  519.3   	    综合    
    13    	  北京师范大学  	  518.3   	    师范    
    14    	   四川大学   	  516.6   	    综合    
    15    	 北京航空航天大学 	  513.8   	    理工    
    16    	   同济大学   	  508.3   	    理工    
    17    	   东南大学   	  488.1   	    综合    
    18    	  中国人民大学  	  487.8   	    综合    
    19    	  北京理工大学  	   474    	    理工    
    20    	   南开大学   	  465.3   	    综合    
    21    	   山东大学   	   447    	    综合    
    22    	   天津大学   	  444.3   	    理工    
    23    	   中南大学   	  442.2   	    综合    
    24    	   吉林大学   	  435.7   	    综合    
    25    	  西北工业大学  	  430.5   	    理工    
    26    	   厦门大学   	  427.8   	    综合    
    27    	  华南理工大学  	  419.8   	    理工    
    28    	  大连理工大学  	  418.2   	    理工    
    29    	  华东师范大学  	  401.8   	    师范    
    30    	  中国农业大学  	  400.4   	    农业    
    31    	  电子科技大学  	  398.8   	    理工    
    32    	   湖南大学   	  393.5   	    综合    
    33    	  北京科技大学  	  379.4   	    理工    
    34    	   重庆大学   	  365.5   	    综合    
    35    	 南京航空航天大学 	  358.6   	    理工    
    36    	   东北大学   	  356.1   	    理工    
    37    	  南京理工大学  	   356    	    理工    
    38    	 西安电子科技大学 	  355.1   	    理工    
    39    	   兰州大学   	  353.4   	    综合    
    40    	  北京交通大学  	  349.9   	    理工    
    41    	  南方科技大学  	  345.8   	    综合    
    42    	  华中农业大学  	  338.5   	    农业    
    43    	   上海大学   	   333    	    综合    
    44    	   苏州大学   	   327    	    综合    
    45    	  华东理工大学  	  324.5   	    理工    
    46    	  华中师范大学  	   322    	    师范    
    47    	  南京师范大学  	  321.3   	    师范    
    48    	中国地质大学(武汉)	  320.2   	    理工    
    49    	  东北师范大学  	  319.7   	    师范    
    50    	 哈尔滨工程大学  	   319    	    理工    
    51    	  西南交通大学  	   318    	    理工    
    52    	  南京农业大学  	  316.1   	    农业    
    53    	   郑州大学   	  312.8   	    综合    
    54    	  北京邮电大学  	  312.5   	    理工    
    55    	  武汉理工大学  	  312.2   	    理工    
    56    	  中国海洋大学  	   311    	    综合    
    57    	   暨南大学   	  307.4   	    综合    
    58    	中国石油大学(北京)	  307.3   	    理工    
    59    	  北京工业大学  	   306    	    理工    
    60    	   河海大学   	  303.4   	    理工    
    61    	  中国矿业大学  	  301.6   	    理工    
    62    	  北京化工大学  	  296.7   	    理工    
    63    	中国地质大学(北京)	  295.5   	    理工    
    64    	   西北大学   	   293    	    综合    
    65    	   江南大学   	  292.9   	    综合    
    66    	  上海科技大学  	  288.7   	    综合    
    67    	中国石油大学(华东)	  287.4   	    理工    
    68    	   西南大学   	  286.5   	    综合    
    69    	中国矿业大学(北京)	  285.5   	    理工    
    70    	   深圳大学   	  280.4   	    综合    
    71    	  陕西师范大学  	  280.1   	    师范    
    72    	   江苏大学   	  276.9   	    综合    
    73    	  浙江工业大学  	  275.6   	    理工    
    74    	  北京林业大学  	   275    	    林业    
    75    	  华南师范大学  	  274.7   	    师范    
    76    	 西北农林科技大学 	  273.7   	    农业    
    77    	   扬州大学   	  269.5   	    综合    
    78    	   南昌大学   	  268.9   	    综合    
    79    	   福州大学   	  267.7   	    理工    
    80    	  华北电力大学  	  263.2   	    理工    
    81    	   东华大学   	  262.8   	    理工    
    82    	  合肥工业大学  	  262.7   	    理工    
    83    	   云南大学   	  262.1   	    综合    
    84    	   宁波大学   	  261.4   	    综合    
    85    	  首都师范大学  	  261.1   	    师范    
    86    	  湖南师范大学  	  259.6   	    师范    
    87    	  南京工业大学  	  259.5   	    理工    
    88    	   长安大学   	  250.2   	    理工    
    89    	  福建师范大学  	  248.2   	    师范    
    90    	   安徽大学   	  243.1   	    综合    
    91    	 南京信息工程大学 	  240.9   	    理工    
    92    	  上海理工大学  	  240.7   	    理工    
    93    	  华南农业大学  	  238.3   	    农业    
    94    	   广西大学   	   237    	    综合    
    95    	  南京邮电大学  	  235.7   	    理工    
    95    	   燕山大学   	  235.7   	    理工    
    97    	   河南大学   	  234.6   	    综合    
    98    	   湖北大学   	  232.9   	    综合    
    99    	   广州大学   	  232.7   	    综合    
   100    	   青岛大学   	  231.4   	    综合 

 

你可能感兴趣的:(爬虫,python,爬虫)