#coding=GBK
import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):  //  将url信息爬取,并将html页面返回给其他程序
    try:
        r = requests.get(url,timeout=30)    //30miao
        r.raise_for_status()   //产生异常信息  要检查请求是否成功,请使用 r.raise_for_status()
        r.encoding=r.apparent_encoding      //修改编码
        return r.text    //返回给程序的其他部分
    except:
        return "error"    

def fillUnivList(ulist,html):  //   提取html中有用的信息,并添加到列表中
    soup=BeautifulSoup(html,"html.parser")  //解析器
    for tr in soup.find('tbody').children:   //查找tr标签,遍历标签树
         if isinstance(tr,bs4.element.Tag):   // 对类型进行判断,监测tr标签类型
             tds = tr('td')   //列表类型tds  这是简写   tds=tr.find_all(‘td')           

 ulist.append([tds[0].string,tds[1].string,tds[3].string])

def printUnivList(ulist,num):   // 打印ulist列表
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"  //格式化输出   {1:{3}^10} 1表示位置,{3}表示用第3个参数来填充,^表示居中,10表示占10个位置
    print(tplt.format("排名","学校名称","总分",chr(12288)))     //中文空白字符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 = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html'
    html = getHTMLText(url)     
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20)   //打印大学信息
main()
python爬取最好大学排名

分类:

技术点:

相关文章: