python爬虫输出格式问题

最近学了python的爬虫爬取中国大学排名,然后输出格式对不齐真是为难我这个强迫症患者了。所以经过我的一番努力(随便瞎搞),终于!

话不多说,上代码!代码内容有注解。那个chr(12288)指的是按照中文空格缩进。然后tqlt中的{4}是指按照foemat的第5个参数缩进(不知道是不是这样,但我是这么理解的)。如果不做处理,默认按照英文缩进,但我们大中国字和英语占位不一样嘛。

# 打印中国大学排名

from bs4 import BeautifulSoup
import requests
import bs4
import re

def getHTMLText(url):   #获得页面信息
    try:
        r = requests.get(url, timeout = 30) #用request库抓取页面
        r.raise_for_status()        #判断是否成功抓取页面 返回值为200为成功
        r.encoding = r.apparent_encoding    #更换格式
        return r.text          #返回页面文本信息
    except:
        return ""   #若抓取页面有问题返回空值

def fillUnivList(ulist, html):      #存取有用信息
    soup = BeautifulSoup(html, "html.parser")   #用Beautiful库获得页面HTML信息
    for tr in soup.find('tbody').children:      #找到tbody的子孙tr然后遍历
        if isinstance(tr, bs4.element.Tag):      #判断是不是标签
            tds = tr('td')          #在tr标签信息中找到到td标签并且存入tds
            ulist.append([tds[0].string,tds[1].string, tds[2].string, tds[3].string])      #把td的内容存入ulist 前四个分别是排名、名称、省份、分数
    pass

def printUnivList(ulist, num):  #打印信息函数
    tqlt = "{0:^10}\t{1:{4}^10}\t{2:{4}^10}\t{3:^10}"
    print(tqlt.format("排名","学校名称","省市","分数", chr(12288)))     #打印表头 前面是格式 后面是内容
    for i in range(num):    #循环num次获得学校信
        u = ulist[i]        #把ulist的内容暂时放入u中
        #if(u[2] == "黑龙江"): #筛选黑龙江大学
        print(tqlt.format(u[0], u[1], u[2], u[3], chr(12288)))       #打印u中的信息
    print("Suc" + str(num))

def main():
    uinfo = []
    url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"  #网址信息
    html = getHTMLText(url)     #获取页面信息
    fillUnivList(uinfo, html)      #把html中的信息摘取
    printUnivList(uinfo, 20)       #打印20个学校排名

main()

这就是运行结果啦啦啦啦是不是很整齐哈哈哈

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值