Python网络爬虫与信息提取-中国大学排名(2021年)

慕课 Python网络爬虫与信息提取课程—嵩天 、黄天羽。 第二周,单元六,实例一–爬取最好大学网中国大学排名
由于老师在视频中爬取的是2016年的网页,现在网页源码已经发生了变化,在老师代码的基础上,现给出最新的爬取代码

一、网页分析

爬取链接:最好大学网https://www.shanghairanking.cn/rankings/bcur/202111

原课程网页源码

Python网络爬虫与信息提取-中国大学排名(2021年)
现网页源码,学校名称在a标签里
Python网络爬虫与信息提取-中国大学排名(2021年)

二、代码部分

import requests
from bs4 import BeautifulSoup
import bs4

def getGTMLText(url):
"""
    爬取目标网页的文本信息
    :param url:目标网页链接
    :return:目标网页的文本信息
"""
    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):
"""
    通过BeautifulSoup库解析文本信息,并将所需信息存入ulist列表中
    :param ulist:大学信息列表, 排名 学校名称 得分
    :param html:爬取的文本信息
    :return:
"""
    soup = BeautifulSoup(html, "html.parser")
    for tr in soup.find('tbody').children:        # 遍历tbody的所有子孙节点
        if isinstance(tr, bs4.element.Tag):       # 判断tr标签的类型,如何不是bs4库定义的tag类型,过滤掉
            tds = tr('td')       # 等价于 tr.find_all('td') 将tbody中所有的td标签添加到列表tds
            univ = [tds[0].string.strip(),                 # 提取对应标签中非属性字符串
                    tds[1].find('a').string.strip(),       # 大学名称存在td标签的子标签a中,
                    tds[4].string.strip()]
            ulist.append(univ)

def printUnivList(ulist, num):
"""
    打印大学排名信息
    :param ulist: 大学信息列表, 排名 学校名称 得分
    :param num: 爬取学校的数量
    :return:
"""
    # 打印格式  ^表示居中
    tlpt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tlpt.format("排名", "学校", "得分", chr(12288)))
    for i in range(num):
        u = ulist[i]
        print(tlpt.format(u[0], u[1], u[2], chr(12288)))

def main():
    uinfo = []         # uinfo == ulist  大学排名信息
    url = 'https://www.shanghairanking.cn/rankings/bcur/202111'
    html = getGTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo, 30)     # univ 30

if __name__ == '__main__':
    main()

三、输出结果

    排名          学校          得分
    1          清华大学       969.2
    2          北京大学       855.3
    3          浙江大学       768.7
    4         上海交通大学      723.4
    5          南京大学       654.8
    6          复旦大学       649.7
    7        中国科学技术大学     577.0
    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.0
    20         南开大学       465.3
    21         山东大学       447.0
    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

进程已结束,退出代码为 0

已转载至csdn

Original: https://www.cnblogs.com/Oraer/p/15884624.html
Author: Oraer
Title: Python网络爬虫与信息提取-中国大学排名(2021年)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616334/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python-数据描述与分析2(利用Pandas处理数据 缺失值的处理 数据库的使用)

    2.利用Pandas处理数据2.1 汇总计算当我们知道如何加载数据后,接下来就是如何处理数据,虽然之前的赋值计算也是一种计算,但是如果Pandas的作用就停留在此,那我们也许只是看…

    Python 2023年10月31日
    030
  • Seaborn学习

    Seaborn学习 Seaborn在matplotlib上进行了封装,提供了许多画图模板。本文整理自https://www.bilibili.com/video/BV1HF411B…

    Python 2023年9月4日
    052
  • 父类对象和子类对象相互转换

    1.用子类可以给父类赋值 CXST zhangsan(1000,1000); CST lisi=zhangsan; 2.父类给子类不行,出现填不满 Original: https:…

    Python 2023年6月12日
    088
  • 想要做好代码质量,如何破局?

    作者:苗现方 想要做好代码质量,我们不得不提什么是代码质量?本文中讨论的代码质量一般是指代码的风格、重复率和复杂度等,代码是技术团队的价值产物,是宝贵的财富,同样代码质量的好坏可以…

    Python 2023年10月14日
    027
  • pytest学习笔记

    学习源:https://www.bilibili.com/video/BV1kz4y1f7Cm?t=477&p=9https://docs.pytest.org/en/st…

    Python 2023年9月14日
    033
  • 完了,又火一个软件测试实战项目

    前言 昨天刷测试之家,看到有自学软件测试的同学苦恼于看书学习之后,学过的知识转瞬即忘,并且没有上手的测试项目,不管是知识巩固还是面试求职,都比较艰难。 其实,初次接触技术工作,遇到…

    Python 2023年8月6日
    063
  • 详解Python中genfromtxt的用法(numpy)

    genfromtxt是numpy的一个内置函数,主要是针对数据集的导入 import numpy as np from io import StringIO help(np.gen…

    Python 2023年8月24日
    051
  • 改进YOLOv5系列:9.BoTNet Transformer结构的修改

    💡统一使用 YOLOv5 代码框架, 结合不同模块来构建不同的YOLO目标检测模型。 🌟本项目包含大量的改进方式,降低改进难度,改进点包含 【Backbone…

    Python 2023年9月16日
    036
  • python读取csv文件命令

    python操作csv文件命令大全(一) 读文件和看文件 df = pd.read_csv(’文件名.csv’) df.head() 合并文件 pd.merge(left, rig…

    Python 2023年8月7日
    073
  • pandas数据分析之缺失值处理

    缺失值处理 1、查看是否有缺失值 2、选择删除行 3、选择删除列 4、使用字符串代替缺失值 5、前一个数据代替 6、后一个数据代替 7、平均值代替 当数据中存在缺失值时,可以用其他…

    Python 2023年8月6日
    056
  • 【Numpy】1. n维数组,dtype,切片,索引

    NumPy是python的一个第三方库,全称”Numeric Python”。他可以执行数组的算数和逻辑运算、线性代数等多方面操作,如何安装这个库,这里就不…

    Python 2023年8月26日
    070
  • JDK源码分析实战系列-PriorityQueue

    完全二叉树 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵…

    Python 2023年10月14日
    043
  • Pygame小游戏之俄罗斯方块凭什么火了30年?(史上最畅销单机游戏)

    前言 一款俄罗斯方块火了30年,成为有史以来最畅销的单机游戏。 它为什么有那么的魔力经久不衰? 小编总结了一些原因: 上手极其简单,技巧却很多,满足在混乱中创造秩序的渴望&#823…

    Python 2023年9月20日
    057
  • Jupyter Notebook 快捷键

    Jupyter Notebook 有两种键盘输入模式。 编辑模式,允许你往单元中键入代码或文本;这时的单元框线是绿色的。 命令模式,键盘输入运行程序命令;这时的单元框线是灰色。 1…

    Python 2023年10月31日
    051
  • 18.自定义标签及模板中的使用【由浅入深】

    紧接上文——《17.自定义过滤器及模板中的使用(实战通过自定义过滤器实现内置过滤器lower和cut的功能)》,本文来讲一讲自定义标签!!! 自定义标签: 源码学习:templat…

    Python 2023年8月5日
    061
  • 驱动开发:内核通过PEB得到进程参数

    PEB结构 (Process Envirorment Block Structure)其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存…

    Python 2023年10月19日
    019
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球