2012-04-18 72 views
1

使用的urllib2,並試圖讓HTTPS頁面失敗,它不斷與的urllib2以https網站

Invalid url, unable to resolve 

失敗的URL是 https://www.domainsbyproxy.com/default.aspx 但我有多個https網站這種情況發生。

我使用python 2.7,以下是我使用的設置連接代碼

opener = urllib2.OpenerDirector() 
opener.add_handler(urllib2.HTTPHandler()) 
opener.add_handler(urllib2.HTTPDefaultErrorHandler()) 
opener.addheaders = [('Accept-encoding', 'gzip')] 
fetch_timeout = 12 
response = opener.open(url, None, fetch_timeout) 

我手動設置處理的原因是因爲我不想處理重定向(工作正常) 。上述工作適用於http請求,但https - 失敗。

任何線索?

回答

6

您應該使用HTTPSHandler而不是HttpHandler的

+0

有趣的,我只是假設。我想知道這是否意味着我也必須做HTTPSDefaultErrorHandler – Wizzard 2012-04-18 04:05:26

+1

安裝HTTPSDefaultErrorHandler不存在 – 2012-04-18 07:39:04

2

如果你不介意的外部庫,考慮優秀requests模塊。它用urllib處理這些怪癖。

你的代碼,使用requests是:

import requests 
r = requests.get(url, headers={'Accept-encoding': 'gzip'}, timeout=12) 
+0

這看起來不錯,我已經寫好了我的項目的所有代碼,但將在未來使用。 – Wizzard 2012-04-18 08:06:00