学习笔记: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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值