zoukankan      html  css  js  c++  java
  • 中国大学排名(定向爬虫)实例

    中国大学排名(定向爬虫)实例

    获取中国大学排名的爬虫实例,采用了requestsBeautifulSoup4函数库

    中国大学排名网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html

    功能描述:

    输入:大学排名URL连接

    输出:大学排名信息的屏幕输出(排名,大学名称,总分)

    技术路线:requests和bs4

    定向爬虫:仅对输入URL进行爬取,不扩展爬取

     

    robots协议:

    定向爬虫网址是否提供robots协议的约定,由于我们只访问了这个网站的一个链接,可以手动查看。

    输入:http://www.zuihaodaxue.cn/robots.txt

    发现网页不存在(如下图)

    说明这个网站并没有通过robots协议对爬虫进行相应的限制,因此我们对大学排名的爬取是可以实现的。

    程序结构设计:

    步骤1:从网络上获取大学排名网页内容:def getHTMLText(url)

    步骤2:提取网页内容中信息到合适的数据结构:def fillUnivList(ulist, html)

    步骤3:利用数据结构展示并输出结果:def printUnivList(ulist, num)

     

    完整代码:

     1 #CrawUnivRankingB.py
     2 import requests
     3 from bs4 import BeautifulSoup
     4 import bs4
     5 
     6 # 将网页中的信息爬去出来并返回,,从网络中获取大学排名网页内容
     7 def getHTMLText(url):
     8     try:
     9         r = requests.get(url, timeout=30)
    10         r.raise_for_status()#异常信息
    11         r.encoding = r.apparent_encoding
    12         return r.text
    13     except:
    14         return ""
    15 
    16 # 提取html内容中信息到合适的数据结构中
    17 def fillUnivList(ulist, html):
    18     soup = BeautifulSoup(html, "html.parser")
    19     for tr in soup.find('tbody').children:
    20         # 检测tr标签的类型,如果tr标签的类型不是bs4类型
    21         if isinstance(tr, bs4.element.Tag):
    22             tds = tr('td')
    23             ulist.append([tds[0].string, tds[1].string, tds[3].string])
    24 
    25 # 利用数据结构展示并输出结果
    26 def printUnivList(ulist, num):
    27     tplt = "{0:^10}	{1:{3}^10}	{2:^10}"
    28     print(tplt.format("排名","学校名称","总分",chr(12288)))
    29     for i in range(num):
    30         u=ulist[i]
    31         print(tplt.format(u[0],u[1],u[2],chr(12288)))
    32     
    33 def main():
    34     uinfo = []
    35     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
    36     html = getHTMLText(url)
    37     fillUnivList(uinfo, html)
    38     printUnivList(uinfo, 20) #20个学校信息
    39 main()
  • 相关阅读:
    怎样写APP计划书-20150313早读课
    机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法
    iOS的isnan函数
    过滤NSString中的Emoji
    开工了,发个招聘~长虹智能交易平台英雄帖(有截止日期,事实上长期有效,标题要长,:)
    C语言变长參数的认识以及宏实现
    Protobuf语言指南
    Python内存管理:垃圾回收
    【bzoj1875】【SDOI2009】【HH去散步】
    Drawable资源的初步使用
  • 原文地址:https://www.cnblogs.com/cyt99/p/11958453.html
Copyright © 2011-2022 走看看