2012-08-02 9 views
22

Mi objetivo es extraer el html de todos los enlaces en la primera página después de ingresar el término de búsqueda de Google. Trabajo detrás de un proxy así que este es mi enfoque.Error - Error de Urlopen [Errno 8] _ssl.c: 504: EOF ocurrió en violación del protocolo, se necesita ayuda

1. Primero utilicé mecanizar para ingresar el término de búsqueda en la forma, he establecido los proxies y los robots correctamente.

2.Después de extraer los enlaces, he usado un abridor usando urllib2.ProxyHandler globalmente, para abrir las urls individualmente.

Sin embargo, esto me da este error. No es capaz de resolverlo.

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

Respuesta

4

Es un error conocido, sin embargo, algunas soluciones se mencionan en los comentarios de este enlace. Véalos, puede ser útil para usted, bug url.

+0

Gracias, NIlesh. Encontré [esto] (https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9) bastante útil, a pesar de que podría no ser la mejor solución solo abandonar TLS2. – cloudrave

21

En lugar de copiar y editar módulos de biblioteca de Python, puede aplicar el parche mono de ssl.wrap_socket() en el módulo ssl anulando el parámetro de palabra clave ssl_version. El siguiente código se puede usar tal cual. Coloque esto al comienzo de su programa antes de realizar cualquier solicitud.

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

hola funcionó como un amuleto. ¿Puede explicarme qué hace este código? – thinkingmonster

Cuestiones relacionadas