【问题标题】:Does urllib or urllib2 in Python 2.5 support https?Python 2.5 中的 urllib 或 urllib2 是否支持 https?
【发布时间】:2010-05-20 15:43:35
【问题描述】:

提前感谢您的帮助。我很困惑相同的代码适用于 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())

这是我得到的例外

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>

再次感谢您的帮助。

【问题讨论】:

    标签: python https urllib2 urllib python-2.5


    【解决方案1】:

    您很可能是在不支持 ssl 的情况下编译的 2.5 版本。

    试试这个:

    >>> import socket
    >>> socket.ssl
    <function ssl at 0xb7ce602c>
    

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

    【讨论】:

    • 我刚刚注意到最近的python总是定义了这个函数,但是如果你调用它,它会打印一个贬值警告,更好的检查可能是import _ssl
    【解决方案2】:

    如果你得到

    urllib2.URLError: <urlopen error unknown url type: https>
    

    你必须安装 openssl、libssl-dev 并从源代码重建 python

    【讨论】:

    • 或在 CentOS/RedHat 平台上使用 openssl-devel。
    • @Oleg:感谢安装要求。他们对解决这个问题非常有帮助。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多