学习笔记:Python爬取2020大学排名

学习笔记:Python爬取2020大学排名

这里需要导入requests库和 bs4库
GetHTMLText(url):爬取页面内容
UnivalsityList(uList,html):解析网页内容,提取关键的排名信息
PrintList(uList,num) 把提取的关键信息打印出来
main() 主函数
我的结果和代码如下:

在这里插入图片描述

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:
        print("爬取失败")
        
def UnivalsityList(uList,html):
    soup=BeautifulSoup(html,'html.parser') #html.parser 以正常html格式显示html文档
    for tr in soup.find('tbody').children: #遍历表格tbody下的tr标签
        if isinstance(tr,bs4.element.Tag): 
        #判断是否为bs4.element.Tag标签类型
            tds=tr('td')  #获取td标签
            u = []
            for i in range(5): #把一行tr标签的td内容赋值给列表
                u.insert(i,tds[i].string)
            uList.append(u)    #一行内容的列表增添在总列表后面,uList是一个二维列表

def PrintList(uList,num):
    tplt1="{0:{5}^10}\t{1:{5}^10}\t{2:{5}^10}\t{3:{5}^10}\t{4:{5}^10}"
    tplt2 = "{0:{5}^10}\t{1:{5}^10}\t{2:{5}^10}\t{3:{5}^10}\t{4:{5}^12}"
    #chr(12288)是中文空格,使内容对齐
    print(tplt1.format("排名","大学名称","省市","类型","指标得分",chr(12288)))
    for i in range(num):
        u=uList[i]
        print(tplt2.format(u[0],u[1],u[2],u[3],u[4],chr(12288)))

def main():
    uinfo=[]
    url="http://www.zuihaodaxue.cn/zuihaodaxuepaiming2020.html"
    html=GetHTMLText(url)
    UnivalsityList(uinfo,html)
    PrintList(uinfo,25) #传参,看你需要前多少名学校
    
if __name__=='__main__':
    main()
上一篇: C语言模拟OS虚拟内存页面置换算法OPT+FIFO+LRU
下一篇: QT+MYSQL实现图书管理系统(续前)
原创达人
博客等级 码龄8年 42粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值