2012-08-02 18 views
22

Moim celem jest wyodrębnienie html ze wszystkich linków na pierwszej stronie po wpisaniu hasła wyszukiwanego w Google. Pracuję za proxy, więc to jest moje podejście.Błąd - błąd urlopen [Errno 8] _ssl.c: 504: EOF wystąpił z naruszeniem protokołu, potrzebna pomoc

1.I po raz pierwszy użyłem mechanize, aby wprowadzić wyszukiwane hasło w formularzu, ive ustawić poprawnie serwery proxy i roboty.

2. Po wyodrębnieniu linków, Ive użył otwieracza, używając globalnego urllib2.ProxyHandler, aby otworzyć adresy URL pojedynczo.

Jednak to daje mi ten błąd. Nie jestem w stanie tego rozgryźć.

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

Odpowiedz

4

Jest to znany błąd, jakkolwiek niektóre rozwiązania dla niego są wymienione w komentarzach tego łącza. Zobacz je, może być pomocne dla ciebie, bug url.

+0

Dziękuję, NIlesh. Znalazłem [this] (https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9), aby było całkiem pomocne, mimo że może nie być najlepszym rozwiązaniem po prostu porzucić TLS2. – cloudrave

21

Zamiast kopiować i edytować moduły biblioteki Pythona, można ssl.wrap_socket() z małpkami w module ssl, zastępując parametr słowa kluczowego ssl_version. Poniższy kod może być użyty tak jak jest. Połóż to na początku programu przed złożeniem jakichkolwiek wniosków.

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

cześć, zadziałało jak urok. Proszę wyjaśnić, co robi ten kod – thinkingmonster