使用Python爬取中国大学排名,并格式化对其输出内容

首先,我们需要注意几点
1.可以使用isinstance语句配合bs4库中的bs4.element.Tag判断获取到的对象是不是标签对象.
2.输出内容并且要求他用空白补齐时,系统默认用的是英文空白符,英文空白符和中文空白符(chr(12288)获取)宽度不一样。

#代码使用python3.x编写
import requests
from bs4 import BeautifulSoup
import bs4 #导入bs4库是为了获取节点的对象类型是不是节点类型

def getHTMLText(url):
    r = requests.get(url,timeout=30)
    if(r.status_code != 200):
        return ""
    else:
        r.encoding = r.apparent_encoding
        return r.text
def fillUnivList(ulist,text):
    soup = BeautifulSoup(text, "html.parser")
    for tr in soup.find("tbody").children:
        # 判断是不是节点类型
        if isinstance(tr,bs4.element.Tag):
            tds = tr('td')#等同于tr.find_all('td')
            ulist.append([tds[0].next.string,tds[1].string,tds[3].string]) #获取子节点标签里面的内容,并放到ulist里面

def printUnivList(ulist,num):
    print(len(ulist))
    templte = "{0:{3}^10}\t{1:{3}^10}\t{2:{3}^10}" #0,1,2,3表示的是第几个参数:是必须写的,^表示居中对齐,5和10表示字符数量,{3}表示用第3个参数来填充,\t是横向制表符
    print(templte.format("序号","大学名称","分数",chr(12288))) #12288表示中文空格符号
    for i in range(num): #num控制显示数量
            print(templte.format(ulist[i][0],ulist[i][1],ulist[i][2],chr(12288)))


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

main()
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值