0
点赞
收藏
分享

微信扫一扫

爬虫练习笔记n

兔八哥软件爱分享 2022-03-12 阅读 56
爬虫python
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')
    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 条评论