0

このコードは Google 経由で見つかりました。キーワードの 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オブジェクト全体を whendata['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 に答える