python 爬取中国大学排名笔记

所有笔记内容均来源于 爱课程 的北京理工大学嵩天教授课程,版权归属于嵩天老师所有。

import requests # 导入网页爬取库
from bs4 import BeautifulSoup #导入html解析库
import bs4 
 
def getHTMLText(url): # 定义函数
    try:
        r = requests.get(url, timeout=30) #网页访问请求,超时30
        r.raise_for_status()#查询访问状态是否异常,异常直接进入except部分进行处理
        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:
        if isinstance(tr, bs4.element.Tag): #判断tr数据是否是Tag标签类型
            tds = tr('td')
            ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
 
def printUnivList(ulist, num): # 对输出数据进行格式控制打印
    tplt = "{0:^10}\t{1:{4}^10}\t{2:{4}^10}\t{3:^10}" # 0,1,2,3,4对应格式控制符后面的变量顺序,10对应输出字符宽度。{1:{4}^10},{4}代表中文空格,表示学校名称中对齐填充的宽度以中文空格对齐
    print(tplt.format("排名","学校名称","省份","总分",chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],u[3],chr(12288)))
     
def main():
    uinfo = []
    url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo, 20) # 20 univs
main()

你可能感兴趣的:(Python学习笔记)