为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕粉6275636 2018-05-01 14:08:37
import requestsfrom bs4 import BeautifulSoupimport bs4def 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[i].string) #读取trs[i]中的字符串内容给a                  a = a.strip()    #删除字符串a前后的空格                  tds[i] = a      #将a的内容赋给trs[i]              except:                  tds[i] = ""   #异常处理,如果tds[i]存的不是字符串                  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[i]   #读取ulist[i]中的字符串内容给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 回答

?
pardon110

TA贡献1038条经验 获得超227个赞


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

查看完整回答
反对 回复 2018-05-02
  • 1 回答
  • 0 关注
  • 1687 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信