urllib不将上下文作为参数

时间:2015-02-18 02:43:00

标签: python urllib

我试图将sssl.SSlContext添加到urlopen方法,但不断收到错误:

TypeError: urlopen() got an unexpected keyword argument 'context'

我正在使用python 3和urllib。这有一个定义的上下文参数 - https://docs.python.org/2/library/urllib.html。所以我不明白它为什么会抛出这个错误。但无论哪种方式,这都是代码:

try:
    # For Python 3.0 and later
    from urllib.request import urlopen, Request
except ImportError:
    # Fall back to Python 2's urllib2
    from urllib2 import urlopen, Request
request = Request(url, content, headers)
request.get_method = lambda: method

if sys.version_info[0] == 2 and sys.version_info[1] < 8:
    result = urlopen(request)
else:
    gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
    result = urlopen(request, context=gcontext)

有人可以解释我做错了吗?

2 个答案:

答案 0 :(得分:3)

根据urllib.request.urlopen documentation

  

版本3.4.3中已更改:已添加上下文。

参数context将在Python 3.4.3中添加。您需要退回到较低版本。


在Python 2.x中,它在Python 2.7.9中添加了。 (urllib.urlopenurllib2.urlopen

答案 1 :(得分:2)

您正在查看错误的文档。 https://docs.python.org/3.0/library/urllib.request.html是你想要的。您使用的是Python 2.X文档。