zoukankan      html  css  js  c++  java
  • AttributeError: 'NoneType' object has no attribute 'children'

    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 printhanshu(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():
        unifo=[]
        url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html"    
        html=gethtmltxt(url)
        culi(unifo,html)
        printhanshu(unifo,20)
        
    main()
            

    不停报错,结果是网址错了,光靠编辑器提示难以发现错误啊,还是排除法好用

    修改了一下,对齐了现在。

    # -*- coding: utf-8 -*-
    """
    Created on Sat Jan  5 20:53:23 2019
    
    @author: Administrator
    """
    
    #中间改成10 并且对a进行修改 使用chr(12288)中文空格填充解决对不齐的问题
    
    
    
    
    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 printhanshu(ulist,num):
        a="{0:^10}{1:{3}^10}{2:^10}"
        print(a.format("排名","学校","地域",chr(12288)))
        for i in range(num):
            u=ulist[i]
            print(a.format(u[0],u[1],u[2],chr(12288)))
    
    def main():
        unifo=[]
        url="http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html"    
        html=gethtmltxt(url)
        culi(unifo,html)
        printhanshu(unifo,20)
        
    main()

    输出如下

       排名        学校        地域    
        1        清华大学      北京市    
        2        北京大学      北京市    
        3        浙江大学      浙江省    
        4       上海交通大学     上海市    
        5        复旦大学      上海市    
        6        南京大学      江苏省    
        7      中国科学技术大学    安徽省    
        8      哈尔滨工业大学     黑龙江省   
        9       华中科技大学     湖北省    
        10       中山大学      广东省    
        11       东南大学      江苏省    
        12       天津大学      天津市    
        13       同济大学      上海市    
        14     北京航空航天大学    北京市    
        15       四川大学      四川省    
        16       武汉大学      湖北省    
        17      西安交通大学     陕西省    
        18       南开大学      天津市    
        19      大连理工大学     辽宁省    
        20       山东大学      山东省   
    

      

  • 相关阅读:
    大爽Python入门教程 45 实践使用
    大爽pyqt5笔记&教程 四 布局 Layout 对其
    大爽Python入门教程 47 答案
    大爽Python入门教程 46 习题
    大爽Python入门教程 43 函数传参 形参、实参 default、*args、**kwargs
    大爽Python入门教程 41 初识函数Function
    大爽Python入门教程 56 实践练习 功能添加
    检测密码是否能过强度检测(正则表达式检测)
    常用加密算法汇总一下
    [转]技术人员,你拿什么拯救你的生活温水煮青蛙
  • 原文地址:https://www.cnblogs.com/xinqidian/p/10216386.html
Copyright © 2011-2022 走看看