Python中的Google搜索问题

Python中的Google搜索问题,python,google-maps,Python,Google Maps,我用python实现了一个程序,它执行Google搜索并从搜索结果中捕获前十个链接。我正在使用“pygoogle”库进行搜索,当我在前两三次实现我的程序时,它得到了正确的点击率,整个项目运行得非常好。但之后,在某些链接被下载后,它给出了一个错误,如下所示。(gui_two.py是我的程序名) Tkinter回调中的异常 Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1

我用python实现了一个程序,它执行Google搜索并从搜索结果中捕获前十个链接。我正在使用“pygoogle”库进行搜索,当我在前两三次实现我的程序时,它得到了正确的点击率,整个项目运行得非常好。但之后,在某些链接被下载后,它给出了一个错误,如下所示。(gui_two.py是我的程序名)

Tkinter回调中的异常

Traceback (most recent call last):

  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
    return self.func(*args)
  File "gui_two.py", line 113, in action
    result = uc.utilcorpus(self.fn1,"")
  File "/home/ci/Desktop/work/corpus/corpus.py", line 125, in utilcorpus
    for url in g1.get_urls():   #this is key sentence based search loop
  File "/home/ci/Desktop/work/corpus/pygoogle.py", line 132, in get_urls
    for result in  data['responseData']['results']:
  TypeError: 'NoneType' object has no attribute '__getitem__'
我知道这是python中最常见的错误,但我不能做任何事情,因为它是一个库。我想知道我的程序是垃圾邮件谷歌或我需要自定义谷歌搜索API的或可能是其他原因。请给我准确的信息执行搜索没有任何问题。我将非常感谢你的帮助

谢谢

编辑:其实我的代码非常庞大,这里有一小段代码,问题就出现在这里

  g1 = pygoogle(query)  
  g1.pages = 1
  for url in g1.get_urls(): #error is in this line
      print "URL : ",url

如果我们只是将它复制到一个简单的.py文件中,它可能会工作,但如果我们多次执行它,程序就会出错。

这是pygoogle.py(from)中的罪魁祸首代码

与使用
数据['responseData']['results']
的所有其他地方不同,使用
has_key()
检查它们是否存在

我怀疑您的
响应数据
缺少
结果
,因此for循环失败

因为您有源代码,所以您可以自己编辑它


还为该项目制造了一个问题-与事实上的问题非常相似。

我通过修改pygoogle.py库程序的源代码解决了这个问题。此代码中的错误是,代码中未检查元素是否包含数据。修改后的代码为:

def get_URL(自):


在我看来,你得到的结果是空的。你能把代码放在那里,这样我们就可以看到什么可能是错误的吗?给我们看代码,否则我们只是猜测。我添加了一个小代码,请看一下。是的,你是对的,我修改了pygoogle的源代码,我发布了答案。它工作得很好。谢谢:)
def get_urls(self):
    """Returns list of result URLs"""
    results = []
    search_results = self.__search__()
    if not search_results:
        self.logger.info('No results returned')
        return results
    for data in search_results:
        if data and data.has_key('responseData') and data['responseData']['results']:
            for result in  data['responseData']['results']:
                if result:
                    results.append(urllib.unquote(result['unescapedUrl']))
    return results
    """Returns list of result URLs"""
    results = []
    for data in self.__search__():
        #following two lines are added to fix the issue
        if data['responseData'] == None or data['responseData']['results'] == None:
            break
        for result in  data['responseData']['results']:
            if result:
                results.append(urllib.unquote(result['unescapedUrl']))
    return results