用于python的googlesearch库

时间:2015-12-19 20:01:01

标签: python proxy timeout google-search

我有一个大型查询文件,我需要在google中搜索并在另一个文件中返回该查询的结果URL。我正在使用这个包https://pypi.python.org/pypi/googlesearch/0.7.0

在终端中运行我的程序时,我经常会有20个左右的URL要打印到屏幕上,然后我将GoogleSearch切换到打印到屏幕上的代理号1。几分钟后,一长串错误以无法建立新连接结束:[Errno 60]操作超时'打印到屏幕上。

我的问题是为什么我首先得到结果然后代理号码切换?我怀疑我发送了太多的请求谷歌但有时我运行我的程序我会得到4个结果然后我得到相同的消息和错误。我能做什么?在包中有一个文件search.py​​,它确定使用哪个代理或何时更改。如果这是错误的原因,是否可以调整请求之间的时间量?

search.py​​的重要部分

def proxy(self):
    if self.use_proxy:
        return {"http": settings.PROXY_LIST[self.proxy_no]}
    else:
        return {"http": None}

def switch_to_next_proxy(self):
    num_proxies = len(settings.PROXY_LIST)
    GoogleSearch.proxy_no = (self.proxy_no + 1) % num_proxies
    if self.verbose:
        print >> sys.stderr, ('GoogleSearch switched to '
                              'proxy number %i' % self.proxy_no)

1 个答案:

答案 0 :(得分:1)

在连续搜索请求之后,Google会怀疑机器人的访问并获得Captcha验证。

googlesearch实现了代理的自动切换以传递该问题:

  
      
  • use_proxy :bool,默认:True如果为True,GoogleSearch将使用PROXIES_LIST变量中定义的代理   googlesearch_settings.py进行搜索。如果代理开始获取   HTTP 403 FORBIDDEN响应,它将切换到下一个代理   名单。只有当所有代理获得403时,它才会引发GoogleAPIError   响应。
  •   

您应该使用tor网络或任何VPN网络创建许多代理,并将它们添加到PROXIES_LIST的{​​{1}}变量