python 中国大学排名

一.步骤

1.从网络获取大学排名网页内容
2.提取网页内容的信息到合适的数据结构
3.利用数据结构展示并输出结果
4.分析Robot协议
http://www.zuihaodaxue.cn/robots.txt

在这里插入图片描述
可知网站对爬虫没有限制;

5.分析网页源代码结构

在要爬取的网页右键查看网页源代码,本人复制到pycharm IDE中,格式化后可见如下;
在这里插入图片描述
所有的排名包含在一个tbody标签中,每一个大学以一个tr分隔,每个大学的信息以td组织;有以上信息之后便可以编写如下代码

二.代码

import  requests
import  bs4
from bs4 import BeautifulSoup

def getHTMLText(url):  # 从网页获取大学排名网页内容
    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")
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag): # 类似type,判断一个类型是否是一个已知的类型
            tds = tr('td') # tr.find_all('td')的简写
            ulist.append([tds[0].string,tds[1].string,tds[3].string])

def printUnivList(ulist,num): # 利用数据结构展示并输出结果
    tplt = "{0:^10}\t{1:{3}^20}\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))) # 采用中文字符的空格填充 chr(12288) # 采用中文字符的空格填充 chr(12288)

def main():
    uinfo = []
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html"
    html = getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,num=20)

main()
#

三.运行结果

在这里插入图片描述

发布了57 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jzj_c_love/article/details/104074809