2012-08-02 86 views
22

我的目标是在输入google搜索词后从第一页的所有链接中提取html。我在代理人后面工作,所以这是我的方法。错误 - urlopen错误[Errno 8] _ssl.c:504:EOF违反协议发生,需要帮助

1.我首先使用机械化在表单中输入搜索词,然后正确设置代理和机器人。

2.提取链接后,我用全局的urllib2.ProxyHandler使用了一个opener来单独打开urls。

但是,这给了我这个错误。无法弄清楚。

urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol 

回答

4

它是一个已知的bug,在这个链接的评论中提到了它的一些解决方案。看到他们,可能对你有帮助,bug url

+0

谢谢你,NIlesh。我发现[this](https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9)非常有帮助,尽管它可能不是最好的解决方案放弃TLS2。 – cloudrave 2013-02-03 08:13:53

21

您可以通过覆盖ssl_version关键字参数来将ssl.wrap_socket()ssl.wrap_socket()复制到ssl模块中,而不是复制和编辑Python库模块。以下代码可以按原样使用。在提出任何请求之前,请在程序开始时进行此操作。

import ssl 
from functools import wraps 
def sslwrap(func): 
    @wraps(func) 
    def bar(*args, **kw): 
     kw['ssl_version'] = ssl.PROTOCOL_TLSv1 
     return func(*args, **kw) 
    return bar 

ssl.wrap_socket = sslwrap(ssl.wrap_socket) 
+0

嗨,它像一个魅力工作。可以请你解释这是什么代码在做 – thinkingmonster 2017-02-06 06:40:12

相关问题