import requests
from bs4 import BeautifulSoup # Beautiful Soup 库是解析,遍历,维护,网页源代码的功能库
def getHTMLtext(url): # 获取页面数据
try:
r=requests.get(url=url,timeout=30) #https://python123.io/ws/demo.html
r.raise_for_status()
r.encoding = r.apparent_encoding # 防止编码异常
return r.text
except:
return ''
def fillUnivList(ulist,html):# 提取所需要的数据
soup = BeautifulSoup(html,'html.parser') # 使用美味汤处理html源代码
for tr in soup.find('tbody').children: # 遍历孩子节点
# 获取孩子节点【tr】中所有的 td 标签的数据 并放入列表中, 浏览对应位置网页源代码的时候会发现
# 每一个tr 下面会有 6 个td 分别是 1.排名 2.名称 及 985之类的标签 3.省份, 4.大学类型 5.总分 6.办学层次
ulist.append([tr.find_all('td')[0].string.strip(), #名排
tr.find_all('td')[1].a.string, #名称
tr.find_all('td')[4].string.strip(), #总分
tr.find_all('td')[5].string.strip()]) #办学层次
def printUnivlist(ulist,num):# 打印展示结果
print('{:^10}\t{:^10}\t{:6}\t{:^10}'.format('排名','学校名称','总分','办学层次'))
# :^10 是用来设置间隔的
for i in range(num):
# print(f'{ulist[i][0]}\t{ulist[i][1]}\t\t{ulist[i][2]}')
print('{:^10}\t{:^10}\t{:6}\t{:^10}'.format(ulist[i][0],ulist[i][1],ulist[i][2],ulist[i][3]))
def main():
uinfo=[] # 存放获取的数据 也可以写多个列表分别存放,更好分辨
url='https://www.shanghairanking.cn/rankings/bcur/2021'
html=getHTMLtext(url)
fillUnivList(uinfo,html)
printUnivlist(uinfo,20)
main()
爬虫练习笔记[获取大学排名]
于 2022-03-08 16:05:39 首次发布