zoukankan      html  css  js  c++  java
  • python爬取中国大学排名

    教程来自:【Python网络爬虫与信息提取】.MOOC. 北京理工大学
    目标:爬取最好大学网前50名大学
    代码如下:

    import requests
    from bs4 import BeautifulSoup
    import bs4
    
    def getHTMLText(url):
        try:
            r = requests.get(url,timeout = 30)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            print("产生异常")
            return ""
    
    def fillUnivList(ulist,html):
        soup = BeautifulSoup(html,'html.parser')
        for tr in soup.find('tbody').children:
            if isinstance(tr,bs4.element.Tag):
                tds = tr('td')
                ulist.append([tds[0].string,tds[1].string,tds[3].string])
    
    def printUnivList(ulist,num):
        tplt = "{0:^10}	{1:{3}^10}	{2:^10}"
        print(tplt.format("排名","学校名称","总分",chr(12288)))
        for i in range(num):
            u = ulist[i]
            print(tplt.format(u[0],u[1],u[2],chr(12288)))
    
    def main():
        uinfo = []
        url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'
        html = getHTMLText(url)
        fillUnivList(uinfo,html)
        printUnivList(uinfo,50) #20所大学
    
    
    if __name__ == '__main__':
        main()
    

    教程里用的代码里没有最后两行,在pycharm里出不来结果,加上以后显示正常。需要注意if __name__ == '__main__': f后面有空格,下划线也是连着的两条。
    输出结果为:

    排名    	   学校名称   	    总分    
        1     	   清华大学   	   94.6   
        2     	   北京大学   	   76.5   
        3     	   浙江大学   	   72.9   
        4     	  上海交通大学  	   72.1   
        5     	   复旦大学   	   65.6   
        6     	 中国科学技术大学 	   60.9   
        7     	  华中科技大学  	   58.9   
        7     	   南京大学   	   58.9   
        9     	   中山大学   	   58.2   
        10    	 哈尔滨工业大学  	   56.7   
        11    	 北京航空航天大学 	   56.3   
        12    	   武汉大学   	   56.2   
        13    	   同济大学   	   55.7   
        14    	  西安交通大学  	   55.0   
        15    	   四川大学   	   54.4   
        16    	  北京理工大学  	   54.0   
        17    	   东南大学   	   53.6   
        18    	   南开大学   	   52.8   
        19    	   天津大学   	   52.3   
        20    	  华南理工大学  	   52.0   
        21    	   中南大学   	   50.3   
        22    	  北京师范大学  	   49.7   
        23    	   山东大学   	   49.1   
        23    	   厦门大学   	   49.1   
        25    	   吉林大学   	   48.9   
        26    	  大连理工大学  	   48.6   
        27    	  电子科技大学  	   48.4   
        28    	   湖南大学   	   48.1   
        29    	   苏州大学   	   47.3   
        30    	  西北工业大学  	   46.7   
        31    	  中国人民大学  	   46.1   
        32    	  华东师范大学  	   46.0   
        33    	 南京航空航天大学 	   44.8   
        34    	 对外经济贸易大学 	   44.7   
        35    	  南方科技大学  	   44.6   
        36    	  华东理工大学  	   44.5   
        37    	   重庆大学   	   44.4   
        38    	  南京理工大学  	   44.3   
        39    	  北京科技大学  	   43.9   
        40    	   东北大学   	   43.7   
        41    	   上海大学   	   43.4   
        42    	  北京邮电大学  	   42.9   
        42    	  上海财经大学  	   42.9   
        42    	  中国农业大学  	   42.9   
        45    	  武汉理工大学  	   42.8   
        46    	  北京交通大学  	   42.6   
        46    	  华中师范大学  	   42.6   
        48    	 西安电子科技大学 	   42.1   
        49    	  中央财经大学  	   41.8   
        50    	  北京化工大学  	   41.7
    
  • 相关阅读:
    三种适配器模式 总结和使用场景
    (面试)Statement和PrepareStatement有什么区别
    知识点:Oracle+表连接方式(内连接-外连接-自连接)+详解 来自百度文库
    (面试题)有关Integer
    sessionId与cookie 的关系(百度文库)
    (面试)将1到100的随机数插入到长度为100的数组中,保证不会有重复元素
    如何通过sql的insert语句插入大量字符串到oracle的clob字段?
    (面试题)synchronized 和 java.util.concurrent.locks.Lock 的异同
    【转】java io 流 设计模式
    (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对
  • 原文地址:https://www.cnblogs.com/leogoforit/p/12540166.html
Copyright © 2011-2022 走看看