爬取2020中国最好大学排名600强完整榜单(软科排名)的前十的大学排名及总分

话不多说,先上代码
(当然这段代码相信大家已经见过,但我修改了抓取的网页并又亲自敲了一遍,感受颇深,那我就详细讲解一下这段代码吧)

import requests #抓取网页必备库
from bs4 import BeautifulSoup #将网页信息整理并储存到列表的必备库
import bs4 #调用isinstance函数

def getHTMLText(url):#首先自定义这段函数为了爬取html网页的信息
     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):#这个函数作用为将网页信息处理后并保存到列表中去
    soup=BeautifulSoup(html,"html.parser")#首先将网页信息用html解析器解析获取html格式信息
    for tr in soup.find('tbody').children:#然后遍历tbody标签里的子全部子标签(这里还包括字符串)
        if isinstance(tr,bs4.element.Tag):#这里就判断里面的tr标签是否为标签元素
            tds=tr('td')#然后就将tr标签中的所有td标签赋给tds列表,注意tr(‘td’)也就是tr.find_all('td')
            ulist.append([tds[0].string,tds[1].string,tds[4].string])#其实这里就是将列表tds的元素中的td标签的内容以一个元素加到ulist列表中,有点像二维数组

def pintUnivList(ulist,num):#这里就是遍历打印信息的函数
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"#首先创建一个适合format的字符串,至于中间的{3}即为以format函数第三个参数为分隔距离,也就是chr(12288),表示以一个汉字大小的距离
    print(tplt.format("排名","学校名称","总分",chr(12288)))#这里就按坑填值了
    for i in range(num):#遍历打印信息
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

def main():#创建一个主函数来调用以上三个函数
    uinfo=[]
    url='https://www.dxsbb.com/news/44368.html'
    html=getHTMLText(url)
    fillUnivList(uinfo,html)
    pintUnivList(uinfo,10)
main()
 

若有错误,欢迎大家来指点!

你可能感兴趣的:(爬取2020中国最好大学排名600强完整榜单(软科排名)的前十的大学排名及总分)