Как запросить URL с не-юникодными символами на основном доменном имени (не params) в Python? - PullRequest
2 голосов
/ 27 марта 2012

Я не могу запросить URL "http://www.besondere -raumdüfte.de" с помощью urllib2.urlopen ().
Я пытался закодировать строку, используя urllib.urlencode с utf-8, idna, ascii, но все равно не работает.
Повышает URLError: <urlopen error unknown url type.

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Что вам нужно, это u"http://www.besondere-raumdüfte.de/".encode('idna'). Обратите внимание, что исходная строка является константой Unicode (префикс u).

Результатом является URL-адрес, используемый с urlopen().

Если у вас есть доменное имя с не-ASCII-символами и , остальная часть URL-адреса содержит не-ASCII-символы, вам нужно .encode('idna') часть домена и iri2uri() остальные.

0 голосов
/ 27 марта 2012

Вы работаете с iri , а не с uri , вам нужно только правильно его преобразовать.Ниже приведен пример того, как это сделать:

from httplib2 import iri2uri

def iri_to_uri(iri):
    """Transform a unicode iri into a ascii uri."""
    if not isinstance(iri, unicode):
        raise TypeError('iri %r should be unicode.' % iri)
    return bytes(iri2uri(iri))

Если у вас есть URI, вы сможете использовать urllib2.

...