Python 2.5中的urllib或urllib2是否支持https?

oli*_*odu 2 python https urllib urllib2 python-2.5

我在这里先向您的帮助表示感谢.我很困惑,相同的代码适用于python 2.6但不适用于2.5.这是代码

import cgi, urllib, urlparse, urllib2
url='https://graph.facebook.com'

req=urllib2.Request(url=url)
p=urllib2.urlopen(req)
response = cgi.parse_qs(p.read())
Run Code Online (Sandbox Code Playgroud)

这是我得到的例外

Traceback (most recent call last):
  File "t2.py", line 6, in <module>
    p=urllib2.urlopen(req)
  File "/home/userx/lib/python2.5/urllib2.py", line 124, in urlopen
    return _opener.open(url, data)
  File "/home/userx/lib/python2.5/urllib2.py", line 381, in open
    response = self._open(req, data)
  File "/home/userx/lib/python2.5/urllib2.py", line 404, in _open
    'unknown_open', req)
  File "/home/userx/lib/python2.5/urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "/home/userx/lib/python2.5/urllib2.py", line 1140, in unknown_open
    raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: https>
Run Code Online (Sandbox Code Playgroud)

再次,感谢您的帮助.

小智 8

很可能你是没有ssl支持编译的2.5版本.

试试这个 :

>>> import socket
>>> socket.ssl
<function ssl at 0xb7ce602c>
Run Code Online (Sandbox Code Playgroud)

检查是否存在ssl(即,您没有捕获AttributeError)


Ole*_*kin 6

如果你得到

urllib2.URLError: <urlopen error unknown url type: https>
Run Code Online (Sandbox Code Playgroud)

你必须从源代码安装openssl,libssl-dev和rebuild python

  • 或者在CentOS/RedHat平台上使用openssl-devel. (2认同)