1

使用 urllib2 并尝试获取 https 页面,它一直失败

Invalid url, unable to resolve

网址是 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 - 失败。

有什么线索吗?

4

2 回答 2

6

您应该使用 HTTPSHandler 而不是 HTTPHandler

于 2012-04-18T03:46:24.927 回答
2

如果您不介意外部库,请考虑优秀的requests模块。它使用 urllib 处理这些怪癖。

你的代码,使用requests的是:

import requests
r = requests.get(url, headers={'Accept-encoding': 'gzip'}, timeout=12)
于 2012-04-18T04:31:21.377 回答