zoukankan      html  css  js  c++  java
  • Python作业默写和自己改编

    默写,爬一个静态大学排行网页排名

    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    def gethtmltxt(url):
        try:    
            r=requests.get(url,timeout=30)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            return ""
    def culi(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[2].string])
    def printfact(ulist,num):
        a="{:^10}{:^6}{:^10}"
        print(a.format("排名","学校","地域"))
        for i in range(num):
            u=ulist[i]
            print(a.format(u[0],u[1],u[2]))
    def main():
        url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html"
        html=gethtmltxt(url)
        unifo=[]
        culi(unifo,html)
        printfact(unifo,20)
    main()

    改编爬取一个类似的界面

    http://gaokao.xdf.cn/201812/10838484.html

    这个试试吧

     一顿操作猛如虎,,怎么把许多字符串转换为一个列表一点点输出呢

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan  3 20:19:53 2019
    
    @author: Administrator
    """
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    url="http://gaokao.xdf.cn/201812/10838484.html"
    r=requests.get(url,timeout=30)
    r.raise_for_status()        
    r.encoding=r.apparent_encoding
    html=r.text
    
    soup=BeautifulSoup(html,"html.parser")
    
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            a=tr("td")
            #print(type(a[1]))
            #print(type(tr))
            #print(type(a))
            #print(type(a[1].string))
            #print(type(a[1].get_text()))
            u=a[1].get_text()
            #print(u,end=",")
            #l=[]
            #l.append(u.split(","))
            m=u.split()
            #print(type(u))
            #print(u)
            print(m,end="")
            #print(m[0],end="")
            #print(type(m[0]))
            #print(l)
            
            #print(type(m))
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            

     :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::未完待续::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan  3 20:19:53 2019
    
    @author: Administrator
    """
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    url="http://gaokao.xdf.cn/201812/10838484.html"
    r=requests.get(url,timeout=30)
    r.raise_for_status()        
    r.encoding=r.apparent_encoding
    html=r.text
    
    soup=BeautifulSoup(html,"html.parser")
    ls=[]
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            a=tr("td")
            #print(type(a[1]))
            #print(type(tr))
            #print(type(a))
                #print(type(a[1].string))
            #print(type(a[1].get_text()))
            #u=a[1].get_text()
            #print(u,end=",")
            #l=[]
            #l.append(u.split(","))
            #m=u.split()
            #print(type(u))
            #print(u)
            #print(m,end="")
            #print(m[0],end="")
            #print(type(m[0]))
            #print(l)
            #print(type(m))
            #print(a[1].string)
            ls.append(a[1].string)
    
            
            
         
            

    现在有一坨字符串 或者有一坨列表不知道如何转换为一个列表。

    from numpy import unicode
    然后把某某转化为unicode格式的
    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan  3 20:19:53 2019
    
    @author: Administrator
    """
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    url="http://gaokao.xdf.cn/201812/10838484.html"
    r=requests.get(url,timeout=30)
    r.raise_for_status()        
    r.encoding=r.apparent_encoding
    html=r.text
    
    soup=BeautifulSoup(html,"html.parser")
    ls=[]
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            a=tr("td")
        
                #print(type(a[1]))
            #print(type(tr))
            #print(type(a))
           #print(type(a[1].string))
            #print(type(a[1].get_text()))
            #u=a[1].get_text()
            #print(u,end=",")
            #l=[]
            #l.append(u.split(","))
            #m=u.split()
            #print(type(u))
            #print(u)
            #print(m,end="")
            #print(m[0],end="")
            #print(type(m[0]))
            #print(l)
            #print(type(m))
            #print(a[1].get_text())
            #ls.append(a[1].string)
            #print(type(a[1].get_text()))
            b=a[1].get_text()
            c=b.split()        
            ls.append(c)
    for i in range(20):
        print(ls[i][0])
    
    
    
    
    输出如下
    学校名称
    北京大学
    清华大学
    中国科学院大学
    复旦大学
    中国人民大学
    浙江大学
    上海交通大学
    南京大学
    武汉大学
    中山大学
    吉林大学
    华中科技大学
    天津大学
    四川大学
    中国科学技术大学
    南开大学
    北京师范大学
    西安交通大学
    哈尔滨工业大学

    现在完成一小步,解决了格式问题,然后类推就行了

    完整代码如下

    # -*- coding: utf-8 -*-
    """
    Created on Sat Jan  5 11:11:03 2019
    
    @author: Administrator
    """
    
    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan  3 20:19:53 2019
    
    @author: Administrator
    """
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    url="http://gaokao.xdf.cn/201812/10838484.html"
    r=requests.get(url,timeout=30)
    r.raise_for_status()        
    r.encoding=r.apparent_encoding
    html=r.text
    
    soup=BeautifulSoup(html,"html.parser")
    ls=[]
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            a=tr("td")
        
                #print(type(a[1]))
            #print(type(tr))
            #print(type(a))
           #print(type(a[1].string))
            #print(type(a[1].get_text()))
            #u=a[1].get_text()
            #print(u,end=",")
            #l=[]
            #l.append(u.split(","))
            #m=u.split()
            #print(type(u))
            #print(u)
            #print(m,end="")
            #print(m[0],end="")
            #print(type(m[0]))
            #print(l)
            #print(type(m))
            #print(a[1].get_text())
            #ls.append(a[1].string)
            #print(type(a[1].get_text()))
            b0=a[0].get_text()
            b1=a[1].get_text()
            b2=a[2].get_text()
            b3=a[3].get_text()
            b4=a[4].get_text()
            c0=b0.split()
            c1=b1.split()
            c2=b2.split()
            c3=b3.split()
            c4=b4.split()        
            ls.append(c1)
            ls.append(c2)
            ls.append(c3)
            ls.append(c4)
            
    
    for i in range(50):
        #print(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0])
        print("{:^10}{:^6}{:^6}{:^10}".format(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0]))

     接下来用修改修改时

    # -*- coding: utf-8 -*-
    """
    Created on Sat Jan  5 11:11:03 2019
    
    @author: Administrator
    """
    
    # -*- coding: utf-8 -*-
    """
    Created on Thu Jan  3 20:19:53 2019
    
    @author: Administrator
    """
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    url="http://gaokao.xdf.cn/201812/10838484.html"
    r=requests.get(url,timeout=30)
    r.raise_for_status()        
    r.encoding=r.apparent_encoding
    html=r.text
    
    soup=BeautifulSoup(html,"html.parser")
    ls=[]
    for tr in soup.find('tbody').children:
        if isinstance(tr,bs4.element.Tag):
            a=tr("td")
       
            for i in range(5):
                ls.append(a[i].get_text().split())
            
    
    for i in range(50):
        #print(ls[8+4*i][0],ls[9+4*i][0],ls[10+4*i][0],ls[11+4*i][0])
        print("{:^10}{:^6}{:^6}{:^10}{:^10}".format(ls[5+5*i][0],ls[6+5*i][0],ls[7+5*i][0],ls[8+5*i][0],ls[9+5*i][0]))
            
     稍微修改修改 

    输出如下。

     1      北京大学  100     8星级      世界一流大学  
        2      清华大学 97.68    8星级      世界一流大学  
        3     中国科学院大学86.77    8星级    世界一流大学(特色)
        4      复旦大学 82.94    8星级      世界一流大学  
        5     中国人民大学82.48    8星级    世界一流大学(特色)
        5      浙江大学 82.48    8星级      世界一流大学  
        7     上海交通大学82.24    7星级    世界知名高水平大学(前列)
        8      南京大学 81.83    7星级    世界知名高水平大学(前列)
        9      武汉大学 81.51    7星级    世界知名高水平大学(前列)
        10     中山大学 78.70    7星级    世界知名高水平大学(前列)
        11     吉林大学 77.84    7星级    世界知名高水平大学 
        12    华中科技大学76.99    7星级    世界知名高水平大学 
        13     天津大学 76.18    7星级    世界知名高水平大学 
        14     四川大学 76.13    7星级    世界知名高水平大学 
        15    中国科学技术大学75.78    8星级    世界一流大学(特色)
        16     南开大学 75.58    7星级    世界知名高水平大学 
        17    北京师范大学75.55    7星级    世界知名高水平大学 
        18    西安交通大学75.08    7星级    世界知名高水平大学(前列)
        19    哈尔滨工业大学75.03    7星级    世界知名高水平大学(前列)
        20     中南大学 74.96    7星级    世界知名高水平大学 
        20     山东大学 74.96    7星级    世界知名高水平大学 
        22     厦门大学 74.61    7星级    世界知名高水平大学 
        23     同济大学 74.43    7星级    世界知名高水平大学 
        24     东南大学 73.99    7星级    世界知名高水平大学 
        25    北京航空航天大学71.87    7星级    世界知名高水平大学 
        26     东北大学 70.65    6星级     世界高水平大学  
        27    西北工业大学70.62    6星级     世界高水平大学  
        28    华东师范大学70.59    6星级     世界高水平大学  
        29    北京理工大学70.52    6星级     世界高水平大学  
        30    华南理工大学70.49    6星级     世界高水平大学  
        31    大连理工大学70.43    6星级     世界高水平大学  
        32     湖南大学 69.68    6星级     世界高水平大学  
        33     重庆大学 69.63    6星级     世界高水平大学  
        34    中国农业大学69.20    6星级    世界高水平大学(特色)
        35     兰州大学 68.46    6星级     世界高水平大学  
        36    华中师范大学68.25    5星级    中国一流大学(特色)
        37    电子科技大学68.18    6星级    世界高水平大学(特色)
        38     西南大学 67.67    5星级    中国一流大学(特色)
        39     河海大学 67.38    6星级    世界高水平大学(特色)
        40    武汉理工大学67.16    5星级    中国一流大学(特色)
        41    西南交通大学67.10    5星级    中国一流大学(特色)
        42    北京科技大学66.80    5星级    中国一流大学(特色)
        43    华中农业大学66.59    5星级    中国一流大学(特色)
        44    北京交通大学66.57    5星级    中国一流大学(特色)
        45     西北大学 66.51    5星级    中国一流大学(特色)
        46     郑州大学 66.50    5星级    中国一流大学(特色)
        47    南京农业大学66.40    5星级    中国一流大学(特色)
        48    华东理工大学66.37    5星级    中国一流大学(特色)
        49     苏州大学 66.36    5星级    中国一流大学(特色)
        50    南京理工大学66.28    5星级    中国一流大学(特色)
    
    runfile('C:/Users/Administrator/大胆测试2.py', wdir='C:/Users/Administrator')
        1      北京大学  100     8星级      世界一流大学  
        2      清华大学 97.68    8星级      世界一流大学  
        3     中国科学院大学86.77    8星级    世界一流大学(特色)
        4      复旦大学 82.94    8星级      世界一流大学  
        5     中国人民大学82.48    8星级    世界一流大学(特色)
        5      浙江大学 82.48    8星级      世界一流大学  
        7     上海交通大学82.24    7星级    世界知名高水平大学(前列)
        8      南京大学 81.83    7星级    世界知名高水平大学(前列)
        9      武汉大学 81.51    7星级    世界知名高水平大学(前列)
        10     中山大学 78.70    7星级    世界知名高水平大学(前列)
        11     吉林大学 77.84    7星级    世界知名高水平大学 
        12    华中科技大学76.99    7星级    世界知名高水平大学 
        13     天津大学 76.18    7星级    世界知名高水平大学 
        14     四川大学 76.13    7星级    世界知名高水平大学 
        15    中国科学技术大学75.78    8星级    世界一流大学(特色)
        16     南开大学 75.58    7星级    世界知名高水平大学 
        17    北京师范大学75.55    7星级    世界知名高水平大学 
        18    西安交通大学75.08    7星级    世界知名高水平大学(前列)
        19    哈尔滨工业大学75.03    7星级    世界知名高水平大学(前列)
        20     中南大学 74.96    7星级    世界知名高水平大学 
        20     山东大学 74.96    7星级    世界知名高水平大学 
        22     厦门大学 74.61    7星级    世界知名高水平大学 
        23     同济大学 74.43    7星级    世界知名高水平大学 
        24     东南大学 73.99    7星级    世界知名高水平大学 
        25    北京航空航天大学71.87    7星级    世界知名高水平大学 
        26     东北大学 70.65    6星级     世界高水平大学  
        27    西北工业大学70.62    6星级     世界高水平大学  
        28    华东师范大学70.59    6星级     世界高水平大学  
        29    北京理工大学70.52    6星级     世界高水平大学  
        30    华南理工大学70.49    6星级     世界高水平大学  
        31    大连理工大学70.43    6星级     世界高水平大学  
        32     湖南大学 69.68    6星级     世界高水平大学  
        33     重庆大学 69.63    6星级     世界高水平大学  
        34    中国农业大学69.20    6星级    世界高水平大学(特色)
        35     兰州大学 68.46    6星级     世界高水平大学  
        36    华中师范大学68.25    5星级    中国一流大学(特色)
        37    电子科技大学68.18    6星级    世界高水平大学(特色)
        38     西南大学 67.67    5星级    中国一流大学(特色)
        39     河海大学 67.38    6星级    世界高水平大学(特色)
        40    武汉理工大学67.16    5星级    中国一流大学(特色)
        41    西南交通大学67.10    5星级    中国一流大学(特色)
        42    北京科技大学66.80    5星级    中国一流大学(特色)
        43    华中农业大学66.59    5星级    中国一流大学(特色)
        44    北京交通大学66.57    5星级    中国一流大学(特色)
        45     西北大学 66.51    5星级    中国一流大学(特色)
        46     郑州大学 66.50    5星级    中国一流大学(特色)
        47    南京农业大学66.40    5星级    中国一流大学(特色)
        48    华东理工大学66.37    5星级    中国一流大学(特色)
        49     苏州大学 66.36    5星级    中国一流大学(特色)
        50    南京理工大学66.28    5星级    中国一流大学(特色)

    写标准一点

    输出排名前10大学
    
    from bs4 import BeautifulSoup
    import bs4
    import requests
    
    def gethtml(url):
        r=requests.get(url,timeout=30)
        r.raise_for_status()        
        r.encoding=r.apparent_encoding
        return r.text
    def jiexi(html):
        soup=BeautifulSoup(html,"html.parser")
        ls=[]
        for tr in soup.find('tbody').children:
            if isinstance(tr,bs4.element.Tag):
                a=tr("td")      
                for i in range(5):
                    ls.append(a[i].get_text().split())
    def dayin(n):      
        for i in range(n):
            print("{:^10}{:^6}{:^6}{:^10}{:^10}".format(ls[5+5*i][0],ls[6+5*i][0],ls[7+5*i][0],ls[8+5*i][0],ls[9+5*i][0]))
    def main(n):      
        url="http://gaokao.xdf.cn/201812/10838484.html"
        html=gethtml(url)
        dayin(n)
    main(10)
        

    嗯,这个爬虫逼我去学习了BeautifulSoup库,主动学习,为了用而学速度就是快,中间的那段废了一点时间。还是挺好玩的

     然后给出html源码,这样即使网站倒闭了,依然可以用bs库来分析,学习 

    
    

  • 相关阅读:
    JavaScript-警告(alert 消息对话框)
    JavaScript中4种document.write()输出展示
    JavaScript-什么是函数
    JavaScript-判断语句(if...else)
    javascript里面什么是变量
    [学习笔记] IT项目管理
    [学习笔记] IT项目管理
    [学习笔记] Oracle基础增删改查用法
    [学习笔记] Oracle字段类型、建表语句、添加约束
    [学习笔记] RabbitMQ的简单使用
  • 原文地址:https://www.cnblogs.com/xinqidian/p/10216486.html
Copyright © 2011-2022 走看看