2012-08-02 29 views
22

私の目的は、Google検索語を入力した後の最初のページのすべてのリンクからHTMLを抽出することです。私はプロキシの背後で作業するので、これは私のアプローチです。エラー - urlopenエラー[Errno 8] _ssl.c:504:プロトコル違反でEOFが発生しました。

1.私は最初にmechanizeを使用してフォームに検索語を入力し、プロキシとロボットを正しく設定しました。

2.リンクを抽出した後、IveはURLを個別に開くために、urllib2.ProxyHandlerをグローバルに使用してオープナーを使用しました。

しかし、これは私にこのエラーをもたらします。それを理解することはできません。

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

答えて

4

これは既知のバグで、このリンクのコメントにどのように解決策が記載されていますか。それらを見て、あなたに役立つかもしれない、bug url

+0

ありがとう、NIlesh。私は[this](https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371/comments/9)がちょうどいい解決策ではないかもしれないという事実にもかかわらずTLS2を放棄する。 – cloudrave

21

Pythonライブラリモジュールをコピーして編集する代わりに、sslモジュールのssl_wrap_socket()にssl_versionキーワードパラメータを上書きしてmonkey-patchすることができます。次のコードはそのまま使用できます。要求を行う前にこれをプログラムの先頭に入れてください。

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

関連する問題