zoukankan      html  css  js  c++  java
  • 18 “中国大学排名定向爬虫”实例介绍

    一、功能描述及程序设计

    二、代码实现

     1 """中国大学排名定向爬虫实例介绍"""
     2 
     3 import requests
     4 from bs4 import BeautifulSoup
     5 import bs4
     6 
     7 
     8 def getHTMLTest(url):
     9 
    10     try:
    11         r = requests.get(url, timeout=30)
    12         r.raise_for_status()
    13         r.encoding = r.apparent_encoding
    14         return r.text
    15     except:
    16         return "getHTMLTest错误"
    17 
    18 
    19 def fillUnivList(ulist, html):
    20 
    21     soup = BeautifulSoup(html, "html.parser")
    22     for tr in soup.find('tbody').children:
    23         # 判断标签是否为bs4.element.Tag
    24         if isinstance(tr, bs4.element.Tag):
    25             tds = tr('td')
    26             # 获得每一个td标签的string值
    27             ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
    28 
    29 
    30 def printUnivList(ulist, num):
    31 
    32     print("{:^10}	{:^6}	{:^10}	{:^10}".format("排名", "学校名称", "省市", "总分"))
    33     for i in range(num):
    34         u = ulist[i]
    35         print("{:^10}	{:^6}	{:^10}	{:^10}".format(u[0], u[1], u[2], u[3]))
    36 
    37 
    38 if __name__ == "__main__":
    39     uinfo = []
    40     url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
    41     html = getHTMLTest(url)
    42     fillUnivList(uinfo, html)
    43     printUnivList(uinfo, 20)    # 20代表输出学校数

    三、对输出函数优化

    1、问题原因

    2、解决方法:

    填充时指定用中文字符进行填充,chr(12288)为中文空格

    def printUnivList2(ulist, num):
    
        # 定义一个输出模板
        tplt = "{0:^10}	{1:{4}^10}	{2:^10}	{3:^10}"      # {4}代表用第4个值填充
        print(tplt.format("排名", "学校名称", "省市", "总分", chr(12288)))    # chr(12288)代表中文空格
        for i in range(num):
            u = ulist[i]
            print(tplt.format(u[0], u[1], u[2], u[3], chr(12288)))
  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/sruzzg/p/13052225.html
Copyright © 2011-2022 走看看