2012-08-02 11 views
22

Il mio obiettivo è estrarre l'html da tutti i link nella prima pagina dopo aver inserito il termine di ricerca di google. Lavoro dietro un proxy quindi questo è il mio approccio.Errore - urlopen errore [Errno 8] _ssl.c: 504: EOF si è verificato in violazione del protocollo, è necessario aiuto

1.Per prima utilizzare meccanize per inserire il termine di ricerca nel modulo, i proxy e i robot devono essere impostati correttamente.

2.Dopo aver estratto i collegamenti, Ive ha utilizzato un apri utilizzando urllib2.ProxyHandler a livello globale, per aprire gli URL individualmente.

Tuttavia questo mi dà questo errore. Non riesco a capirlo.

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

risposta

4

È un bug noto, tuttavia alcune soluzioni sono menzionate nei commenti di questo collegamento. Guardali, potrebbe esserti utile, bug url.

+0

Grazie, NIlesh. Ho trovato [questo] (https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9) molto utile, nonostante il fatto che potrebbe non essere la soluzione migliore per abbandonare TLS2. – cloudrave

21

Invece di copiare e modificare i moduli della libreria Python, è possibile eseguire il patch-ssl.wrap_socket() nel modulo ssl sostituendo il parametro della parola chiave ssl_version. Il seguente codice può essere usato così com'è. Metti questo all'inizio del tuo programma prima di fare qualsiasi richiesta.

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

ciao ha funzionato come un incantesimo. Puoi spiegare che cosa sta facendo questo codice? – thinkingmonster

Problemi correlati