快捷导航

python 'NoneType' object is not iterable错误怎么解决

import requests
from bs4 import BeautifulSoup
import bs4


def getHTMLText(url):
    try:
       r=requests.get(url,timeout=30)  # 返回一个实例,包含了很多的信息
       r.raise_for_status()  # 响应状态码,200表示服务器已成功处理了请求
       r.encoding = r.apparent_encoding# 更改请求网页的编码方式为utf-8
       return r.text    # 返回所请求网页的内容
    except:
      return "产生异常"


def fillUnivList(ulist,html):
    soup = BeautifulSoup(html, "html.parser")  #使用BeatifulSoup解析网页正文文本内容
    for tr in soup.find('tbody'):   # 遍历tbody结构下的tr节点
        if isinstance(tr,bs4.element.Tag):#判断遍历的tr节点是否是标签
          tds=tr('td')  #读取tr节点下的td标签的内容存入一个列表tds
          for i in range(5):
              try:
                  a = str(tds.string) #读取trs中的字符串内容给a
                  a = a.strip()    #删除字符串a前后的空格
                  tds = a      #将a的内容赋给trs
              except:
                  tds = ""   #异常处理,如果tds存的不是字符串
                  return "产生异常"
          ulist.appent(tds[0].string,tds[1].string,tds[2].string)  #将列表trs中的内容以字符串的形式追加到ulist列表中
def printUnvList(ulist,num):
    print("{:^10}\t{:^6}\t{:^10}".format('排名', '学院名称','国家'))
    for i in range(num+1):
        u=ulist   #读取ulist中的字符串内容给u
        if i>0:
           print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[2]))#打印列表u的内容
      
    print("Suc"+str(num))
   
def main():
    unifo = []
    unifo1 = []
    url='https://baike.so.com/doc/5466535-5704751.html'
    html=getHTMLText(url)   #获取url的内容
    fillUnivList(unifo,html)   #利用BeautifulSoup库解析html,获得相关数据存入列表unifo中
    printUnvList(unifo,30)   #打印30行列表unifo中的内容
main()

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

报错信息说明了,你提供的对象类型为None,是不可以迭代(简单点讲不能循环),加个条件判断过滤一下就 是了
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP