2012-08-02 70 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

相關問題