Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2011 12:33:05

rustamakhmetov
От:
Зарегистрирован: 2011-07-12
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразовать кириллицу в url

Добрый день!

Подскажите, пожалуйста, как преобразовать url вида:

http://www.domen.ru/index_avtoitem.php?do=5&kolRazdelov=1&seeID=408&seeArticle=1&meta_statii=FAQ - Японский Автомобиль&searchword=
к

http://www.domen.ru/index_avtoitem.php?do=5&kolRazdelov=1&seeID=408&seeArticle=1&meta_statii=FAQ%20-%20%DF%EF%EE%ED%F1%EA%E8%E9%20%C0%E2%F2%EE%EC%EE%E1%E8%EB%FC&searchword=



Офлайн

#2 Июль 18, 2011 13:12:59

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Преобразовать кириллицу в url

test = 'do=5&kolRazdelov=1&seeID=408&seeArticle=1&meta_statii=FAQ - Японский Автомобиль'

print urllib.quote(test, '&=' )

Офлайн

#3 Июль 18, 2011 13:30:48

rustamakhmetov
От:
Зарегистрирован: 2011-07-12
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразовать кириллицу в url

s0rg, спасибо!

вот что получилось (может кому пригодится). Проблема была в том, что “urllib2.Request” выдавал ошибку “400: Bad request” из-за кириллицы в url адресе.

def normalize_url(url, to_del=''):
parsed = list(urlparse.urlparse(url))
query = "&" + parsed[-2].replace("&", "&")
to_del_re = re.compile("("+"|".join(
[("[&]%s=[^&]+" % i) for i in to_del.split()]
) +")")
query = to_del_re.sub("", query).lstrip("&")
parsed[-2] = urllib.quote(query.encode('cp1251'), '&=' )
newurl = urlparse.ParseResult(*parsed)
return newurl.geturl()

url = u'http://www.domen.ru/index_avtoitem.php?do=5&kolRazdelov=1&seeID=408&seeArticle=1&meta_statii=FAQ - Японский Автомобиль&searchword='
url2= normalize_url(url)
request = urllib2.Request(url2.encode('cp1251'))
...



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version