• 中国大学排名爬虫


    • 功能描述:
      • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
      • 技术路线:requests-bs4
      • 定向爬虫:仅对输入的URL链接进行爬取,不扩展爬取。
                                   
    • 程序的程序设计:
      • 步骤1:从网络上获取大学排名网页内容(getHTMLText())
      • 步骤2:提取网页内容中信息到合适的数据结构(fillUnivList())
      • 步骤3:利用数据结构展示并输出结果(printUnivList())
        格式化输出:
            
    • 爬虫代码:
     1 import requests
     2 from bs4 import BeautifulSoup
     3 import bs4
     4  
     5 def getHTMLText(url):
     6     try:
     7         r = requests.get(url, timeout = 30)
     8         r.raise_for_status()
     9         r.encoding = r.apparent_encoding
    10         return r.text
    11     except:
    12         return ""
    13  
    14 def fillUnivList(ulist, html):
    15     soup = BeautifulSoup(html, "html.parser")
    16     for tr in soup.find('tbody').children:
    17         if isinstance(tr, bs4.element.Tag):
    18             tds = tr('td')
    19             ulist.append([tds[0].string, tds[1].string, tds[2].string])
    20  
    21 def printUnivList(ulist, num):
    22     print("{:^10}	{:^6}	{:^10}".format("排名", "学校名称", "总分"))
    23     for i in range(num):
    24         u = ulist[i]
    25         print("{:^10}	{:^6}	{:^10}".format(u[0], u[1], u[2]))
    26  
    27 #主函数
    28 def main():
    29     uinfo = []
    30     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    31     html = getHTMLText(url)
    32     fillUnivList(uinfo, html)
    33     printUnivList(uinfo, 20) # 20所大学
    34 main()
    • 爬虫结果:
            
    • 爬虫实例优化:
      • 中文对齐问题的原因:   
        •  
          :
          <填充>
          <对齐>
          <宽度>
          ,
          <.精度>
          <类型>
          引导符号
          用于填充的单个字符
          <左对齐
          >右对齐
          ^居中对齐
          槽的设定输出宽度
          数字的千分位分隔符适用于整数和浮点数
          浮点数小数备部分的精度或字符串的最大输出长度
          整数类型:b,c,d,o,x,X浮点数类型:e,E,f,%
          当中文字符宽度不够使,采用西文字符填充;中西文占用宽度不同。
      • 中文对齐问题的解决:
        • 采用中文字符的空格填充 chr(12288)
    • 爬虫代码:
     1 import requests
     2 from bs4 import BeautifulSoup
     3 import bs4
     4  
     5 def getHTMLText(url):
     6     try:
     7         r = requests.get(url, timeout = 30)
     8         r.raise_for_status()
     9         r.encoding = r.apparent_encoding
    10         return r.text
    11     except:
    12         return ""
    13  
    14 def fillUnivList(ulist, html):
    15     soup = BeautifulSoup(html, "html.parser")
    16     for tr in soup.find('tbody').children:
    17         if isinstance(tr, bs4.element.Tag):
    18             tds = tr('td')
    19             ulist.append([tds[0].string, tds[1].string, tds[2].string])
    20  
    21 def printUnivList(ulist, num):
    22     tplt = "{0:^10}	{1:{3}^10}	{2:^10}"
    23     print(tplt.format("排名", "学校名称", "总分", chr(12288)))
    24     for i in range(num):
    25         u = ulist[i]
    26         print(tplt.format(u[0], u[1], u[2], chr(12288)))
    27  
    28 #主函数
    29 def main():
    30     uinfo = []
    31     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    32     html = getHTMLText(url)
    33     fillUnivList(uinfo, html)
    34     printUnivList(uinfo, 20) # 20所大学
    35 main()
    • 爬虫结果:
            
     
    北音执念i
  • 相关阅读:
    Linux Apache Mysql PHP楷模设置配备摆设1
    谋划phpMyAdmin2.6以上版本数据乱码题目
    MYSQL到ORACLE法式迁徙的注意变乱
    关于MySQL中的mysqldump饬令的应用
    MySQL 5.0新特性教程 存储进程:第一讲
    Mysql 数据库的导入与导出
    Linux Apache Mysql PHP典范设置装备安排2
    MYSQL数据库初学者运用指南2
    图解MySQL数据库的铺排和操作3
    MySQL完成表中掏出随机数据
  • 原文地址:https://www.cnblogs.com/beiyin/p/9129568.html
Copyright © 2020-2023  润新知