Python爬虫入门-中国大学排名

本文介绍了使用Python爬虫技术获取并解析中国大学最新排名的过程。展示了清华大学、北京大学等顶级高校的得分情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于中国大学排名网站重构了,原视频中的代码需要部分修改,修改如下:

import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

def fillUnivList(ulist, html):
    soup = BeautifulSoup(html,'html.parser')
    for tr in soup.find('tbody').children:
        # find函数找到包含自己第一个值的父类,并返回
        # find_all函数找到包含自己全部的父类,并返回,可以使用for遍历
        # 所有的大学的信息倍封装在标签<tbody>...</tbody>
        if isinstance(tr,bs4.element.Tag):
            # isinstance函数判断tr是否属于bs4库中tag类型
            # 每个大学的信息被封装在标签<tr>...</tr>中
            # 大学的名称被封装在标签<a>...</a>中
            # 大学的其余信息被封装在标签<td>...</td>中
            a = tr('a') #提取tr标签中a标签的信息,并且存为一个列表
            tds = tr('td') #提取tr标签中td标签的信息,并且存为一个列表  
            ulist.append([tds[0].string.strip(),a[0].string.strip(),tds[4].string.strip()])
            # tds[0]和tds[4]分别提取了大学的排名和得分信息
            # tds[0].string表示在标签之间检索字符串
            # .strip()函数表示移除字符串头尾指定的字符,这里是指的是空格
def printUnivList(ulist, num):
    tplt = '{0:^10}\t{1:{3}^10}\t{2:^10}'
    # \t代表4个空格,也就是一个Tab键
    # {1:{3}^10}表示{}数据来源于format函数中第1个填充变量,^10,表示居中,10个字符。
    # 上述{}中的{3}表示采用fomat函数中的第3个变量填充
    print(tplt.format('排名','学校名称','总分',chr(12288)))
    # 中西文混用的时候,采用chr(12288)进行中文字符的空格填充
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0], u[1], u[2],chr(12288)))

def main():
    uinfo = []
    url = 'https://www.shanghairanking.cn/rankings/bcur/202011'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo,10)


if __name__ == '__main__':
    main()

运行结果如下:
排名    学校名称    总分
1    清华大学    852.5
2    北京大学    746.7
3    浙江大学    649.2
4   上海交通大学   625.9
5    南京大学    566.1
6    复旦大学    556.7
7  中国科学技术大学  526.4
8   华中科技大学   497.7
9    武汉大学    488
10    中山大学    457.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值