Поддерживает ли urllib или urllib2 в Python 2.5 https? - PullRequest
2 голосов
/ 20 мая 2010

Спасибо за помощь заранее. Я озадачен тем, что тот же код работает для 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>

Опять же, спасибо за помощь.

Ответы [ 2 ]

8 голосов
/ 20 мая 2010

Скорее всего, вы используете версию 2.5 без компиляции ssl.

Попробуйте это:

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

для проверки наличия ssl (т.е. вы не перехватываете AttributeError)

6 голосов
/ 19 апреля 2013

Если вы получите

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

вам нужно установить openssl, libssl-dev и пересобрать python из исходников

...