爬虫练习笔记[获取大学排名]

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将来怎么办

你的鼓励是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值