爬虫爬取中国大学排名

爬虫爬取中国大学排名

import requests
import bs4 #导入bs4库,下文检测网页数据类型会用到
from bs4 import BeautifulSoup
 
def getHTMLText(url): #step1  '''获取网页信息的通用框架'''
    try:
        r=requests.get(url,timeout=40)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return '' #否则返回内容为空
 
def fillUnivList(ulist,html): #step2 提取HTML中关键数据,并添加到列表中
    soup=BeautifulSoup(html,'html.parser')
     # 检查网页代码可以发现数据都储存在tboyd标签中,这里需要对tbody的儿子节点进行遍历
    for tr in soup.find('tbody').children:
    # 检测标签类型,如果不是bs4库支持的Tag类型,就过滤掉
       if isinstance(tr,bs4.element.Tag):
            # 解析出tr标签中的td标签后,将其储存在列表tds中
            tds=tr('td')
            # 我们需要的是排名、学校名称和总分,写入列表
            ulist.append([tds[0].string,tds[1].string,tds[3].string])
 
 
def printUnivList(ulist,num): #step3
    #定义输出模板为变量tplt,\t为横向制表符,10为每列的宽度
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"  
    #format格式化,{3}为下行中chr(12888),中文空格填充符,美化显示。
    print(tplt.format('排名','学校名称','总分',chr(12288))) 
     #  {:^10}表示取10位居中对齐
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))
 
if __name__=='__main__':
    uinfo=[]
    url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    html=getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20)  #打印20所学校的信息

result:
排名    学校名称    总分
1    清华大学    95.9
2    北京大学    82.6
3    浙江大学    80
4   上海交通大学   78.7
5    复旦大学    70.9
6    南京大学    66.1
7  中国科学技术大学  65.5
8  哈尔滨工业大学   63.5
9   华中科技大学   62.9
10    中山大学    62.1
11    东南大学    61.4
12    天津大学    60.8
13    同济大学    59.8
14  北京航空航天大学  59.6
15    四川大学    59.4
16    武汉大学    59.1
17   西安交通大学   58.9
18    南开大学    58.3
19   大连理工大学   56.9
20    山东大学    56.3

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值