首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:“NoneType”对象在使用google API的python代码中没有“”__getitem__“”属性

TypeError:“NoneType”对象在使用google API的python代码中没有“”__getitem__“”属性
EN

Stack Overflow用户
提问于 2016-03-31 18:43:02
回答 2查看 6.4K关注 0票数 1

我有这段代码,它使用google API在google中搜索一个单词,但这一次它工作得很好,但如果我添加了很多单词,或者如果我多次运行它,我总是得到以下错误...

代码语言:javascript
复制
    results = jsonResponse['responseData']['results']
TypeError: 'NoneType' object has no attribute '__getitem__'

我试着在谷歌上搜索了很多次,但不知道问题出在哪里。谁可以帮助我了解这个问题和如何处理它…正在与这个错误作斗争

代码语言:javascript
复制
 import urllib
    import urllib2
    from urllib import urlencode
    import json as m_json
    from urllib2 import urlopen
    import re
    import json
    from nltk.corpus import stopwords
    import sys
    from urllib2 import urlopen
    import urllib2
    import simplejson
    import pprint

    words = ['headache','diabetes','myopia','dhaed','snow','blindness','head','ache','acne','aids','blindness','head','ache','acne','aids','blindness','head','ache','acne','aids']


    for word in words:
     url = ('https://ajax.googleapis.com/ajax/services/search/web'
           '?v=1.0&q='+word+'&userip=192.168.1.105')
     request = urllib2.Request(url)
     response = urllib2.urlopen(request)
     jsonResponse=json.loads(response.read())
     #print "the response now is: ",jsonResponse
     #pprint.pprint(jsonResponse)
     results = jsonResponse['responseData']['results']
     for result in results:
      print "\nthe result is: ",result
      url =result['url']
      print "\nthe url is: ",url
      try:
       page=urllib2.urlopen(url).read()
      except urllib2.HTTPError,err:
       if err.code == 403:
        print "bad"
        continue
       else:
        print "good"
        break
      except urllib2.HTTPError:
        print "server error"
      except:
       print "dont know the error"

感谢就是进步..

EN

回答 2

Stack Overflow用户

发布于 2016-03-31 18:55:09

当没有结果时,jsonResponse['responseData']可能是None,因此在结果中没有名为results的属性,或者responseData本身是None (== JSON null)。(字典查找失败,因为jsonResponsejsonResponse['responseData']为null/None。

当该错误发生时,转储输出以查看哪个是None,然后在results = jsonResponse['responseData']['results']行之前添加对它的检查。

票数 2
EN

Stack Overflow用户

发布于 2016-04-04 22:14:59

Aneroid对响应数据的判断是正确的。

处理此问题的一个可能的解决方案是:

代码语言:javascript
复制
responseData = jsonResponse['responseData']
if responseData is not None:
    results = responseData['results']
    for results in results:
        # your code
else:
    print "No Response"   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36331091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档