python爬虫爬取最好大学排名

#-*- coding:utf-8 -*-
#-Author-= JamesBen
 #Email: [email protected]

import  requests
from bs4 import  BeautifulSoup
import bs4

#定义第一个函数得到网页源代码,并且可以进行稳定的运行
def  Get_HTML(url):
    try :
        use = {'User-Agent': 'Mozilla/5.0'}  #此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦截
        r = requests.get(url, timeout = 30,headers = use)
        r.raise_for_status()      #如果状态不是200引发HTTPError异常
        r.encoding = r.apparent_encoding  #将文本的编辑方式传给头,防止造成编码错路出现乱码
        return  r.text
    except :
            return "产生异常"

#定义一个函数得到特定的tr标签
def  U_list(ulist,html):
    soup = BeautifulSoup(html,"html.parser")
    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[3].string])
    pass

#格式化输出函数
def print_Univlist(ulist,num):
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tplt.format("排名","学校名称","总分",chr(12288)))
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))
    print("Suc"+str(num))

def main():
    uinfo = []
    url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'
    html = Get_HTML(url)
    U_list( uinfo,html)
    print_Univlist( uinfo,20)


if __name__ == "__main__":
    main()

猜你喜欢

转载自www.cnblogs.com/James-Ben/p/12301783.html