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

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

一、网页分析

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

原课程网页源码
原课程网页源码
现网页源码,学校名称在a标签里
现网页源码

二、代码部分

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

posted @   Oraer  阅读(1076)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示