python中用requests库和BeautifulSoup库爬的大学排名

python中用requests库和BeautifulSoup库爬的大学排名,并写入文件中

代码如下:

import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url): #获取文本
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "没有捕捉到"
def fillUnivList(ulist,html):
    soup=BeautifulSoup(html,"html.parser")
   # print(soup.find('tbody'))
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):#isinatance()认为子类是父类的一种类型,考虑继承关系
            tds=tr('td')#寻找所有tr下的td,等价于tds=tr.find_all('tr')
            ulist.append([tds[0].string,tds[1].string,tds[3].string])
            #.string指tr标签内的内容
            
def printUnivList(ulist,num):
    f=open('pythontxt\\universepaiming.txt','w')
    tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"#{3}是指用chr(12288)填充,结合程序捕获用来作 分行居中显示,^表示居中
    print(tplt.format("排名","学校名称","总得分",chr(12288)),file=f)
    for i in range(num):
        u=ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)),file=f)
    f.close()

def main():
    uinfo=[]
    url="http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html"
    html=getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo,20)   #前20所学校
main()

代码运行结果如下:

在这里插入图片描述
当中文字符宽度不够时,采用西文字符填充;中西文字符占用宽度不同。
这里用的是chr(12288)

内置format()函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
注意:花括号个数可以少于位置参数的个数,相反的话会报错。
比如
print(“我叫{},今年{}岁”.format(“小明”,“10”))
输出结果为 我叫小明,今年10岁
用{}来代表你要输入的变量

对齐方式的取值:

*>:左对齐
*<:右对齐
*^:居中
*=:在正负号(如果有的话)和数字之间填充,该对齐选项仅对数字类型有效。它可以输出类似 +0000120 这样的字符串

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值