首页 > 其他 > 详细

中国大学排名爬虫

时间:2018-06-03 17:01:14      阅读:215      评论:0      收藏:0      [点我收藏+]
  • 功能描述:
    • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
    • 技术路线: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}\t{:^6}\t{:^10}".format("排名", "学校名称", "总分"))
23     for i in range(num):
24         u = ulist[i]
25         print("{:^10}\t{:^6}\t{:^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}\t{1:{3}^10}\t{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()
  • 爬虫结果:
        技术分享图片技术分享图片

 

 

中国大学排名爬虫

原文:https://www.cnblogs.com/beiyin/p/9129568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!