[Python3爬虫从入门到精通]中国大…

#采用request-bs4路线实现了中国大学排名定向爬虫
# 对中英文混排输出问题进行优化
import requests
from bs4 import BeautifulSoup
import bs4
#import bs4 为了使用它的标签类型定义

def getHTMLText(url) :
    try:
        r = requests.get(url, timeout = 30)
        # print(r.status_code)200为正常,其他信息都有误
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return 'Get Failed.'

def fillUnivList(ulist, html):
    soup =BeautifulSoup(html, 'html.parser')
    #print(soup[0:500]) 报错:TypeError: unhashable type:'slice'
    for tr insoup.find('tbody').children:
        if isinstance(tr, bs4.element.Tag) :
        # isinstance(object,classinfo) isinstance函数来判断一个对象是否为某个类型的实例
        #tr有可能不是标签类型,此处判断起过滤的作用
            tds =tr('td')
            # 将所有的td标签放入列表tds中
          # print(tds[0]) 输出:
          # print(tds) 
            ulist.append([tds[0].string, tds[1].string, tds[3].string])
             
def printUnivList(ulist, num):
    #tplt = '{:^10}\t{1:{3}^10}\t{:^10}' 报错:ValueError: cannot switchfrom automatic field numbering to manual fieldspecification
    tplt ='{0:^10}\t{1:{3}^10}\t{2:^10}'
    #其中0 表示第一个填充位置,1 第二个,以此类推
    #:号后面带填充的字符,只能是一个字符,不指定的话默认是用半角空格填充
    #print('{ :^10}\t{ :^6}\t{ :^10}'.format('排名', '学校名称', '总分'))//报错:KeyError: ' '
    #print({:^10}\t{:^6}\t{:^10}.format('排名', '学校名称','总分'))
    print(tplt.format('排名','学校名称', '总分', chr(12288)))
    #chr(12288) 应该是全角空格
    #一个汉字也只算一个字符
    for i inrange(num):
        u = ulist[i]
        print(tplt.format(u[0], u[1], u[2],chr(12288)))

def main():
    uinfo = []
    url ='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    html =getHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivList(uinfo, 20)  # 20 univ
main()
 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值