0

我们通过谷歌找到了这段代码。它应该为我们提供关键字的 Google 索引。问题是它工作了一段时间然后给我们这个错误:

./g1.py size hassize
Traceback (most recent call last):
  File "./g1.py", line 22, in <module>
    n2 = int(gsearch(args[0]+" "+args[1])['cursor']['estimatedResultCount'])
TypeError: 'NoneType' object is unsubscriptable

编码:

#!/usr/bin/env python

import math,sys
import json
import urllib

def gsearch(searchfor):
  query = urllib.urlencode({'q': searchfor})
  url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
  search_response = urllib.urlopen(url)
  search_results = search_response.read()
  results = json.loads(search_results)
  data = results['responseData']
  return data

args = sys.argv[1:]
m = 45000000000
if len(args) != 2:
        print "need two words as arguments"
        exit
n0 = int(gsearch(args[0])['cursor']['estimatedResultCount'])
n1 = int(gsearch(args[1])['cursor']['estimatedResultCount'])
n2 = int(gsearch(args[0]+" "+args[1])['cursor']['estimatedResultCount'])
4

1 回答 1

1

我运行了您的代码几次,发现您的查询每隔一段时间就会返回一个具有data['responseData'] = None. 这导致您报告的错误。为了找出为什么有时会出现这种情况,我在data时输出了整个对象data['responseData'] = None,并发现以下内容:

{u'responseData': None,
 u'responseDetails': u'Suspected Terms of Service Abuse.
                       Please see http://code.google.com/apis/errors',
 u'responseStatus': 403}

您的某些请求似乎正在返回HTTP 403 Forbidden状态代码,因此您的查询没有被完成(因此没有数据)。我会阅读有关 Google 服务条款的页面,看看您是否能弄清楚您的某些请求可能违反其服务条款的原因。

于 2013-10-06T15:53:30.277 回答