我有这段代码,它使用google API在google中搜索一个单词,但这一次它工作得很好,但如果我添加了很多单词,或者如果我多次运行它,我总是得到以下错误...
results = jsonResponse['responseData']['results']
TypeError: 'NoneType' object has no attribute '__getitem__'我试着在谷歌上搜索了很多次,但不知道问题出在哪里。谁可以帮助我了解这个问题和如何处理它…正在与这个错误作斗争
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"感谢就是进步..
发布于 2016-03-31 18:55:09
当没有结果时,jsonResponse['responseData']可能是None,因此在结果中没有名为results的属性,或者responseData本身是None (== JSON null)。(字典查找失败,因为jsonResponse或jsonResponse['responseData']为null/None。
当该错误发生时,转储输出以查看哪个是None,然后在results = jsonResponse['responseData']['results']行之前添加对它的检查。
发布于 2016-04-04 22:14:59
Aneroid对响应数据的判断是正确的。
处理此问题的一个可能的解决方案是:
responseData = jsonResponse['responseData']
if responseData is not None:
results = responseData['results']
for results in results:
# your code
else:
print "No Response" https://stackoverflow.com/questions/36331091
复制相似问题