der_FeniX 06.01.2011 15:34 17314627231294313758179095

Питонисты! Как urllib.urlopen заставить открывать адреса с кириллицей?

1. sl 06.01.2011 15:34 Gajim

urllib.urlopen(urllib.quote(url))

2. der_FeniXsl /1 06.01.2011 15:36 17314627231294313758179095

нихочет..
Traceback (most recent call last):
File "parser.py", line 26, in <module>
print urllib.urlopen(urllib.quote(" http://auto.ru/%s/"%brand))
File "/usr/lib/python2.7/urllib.py", line 1238, in quote
return ''.join(map(quoter, s))
KeyError: u'\u0412'

3. slder_FeniX /2 06.01.2011 15:38 Gajim

print urllib.urlopen(urllib.quote(u" http://auto.ru/%s/"%unicode(brand)))
попробуй так

4. der_FeniXsl /3 06.01.2011 15:41 17314627231294313758179095

та же фигня... гадство.. из-за этой херни не могу парсер дописать. работы на 10 минут, а сижу уже полчаса из-за этого..

5. slder_FeniX /4 06.01.2011 15:41 Gajim

а что там в переменной brand на момент ошибки?

6. der_FeniXsl /5 06.01.2011 15:43 17314627231294313758179095

там ВАЗ

7. slder_FeniX /6 06.01.2011 15:44 Gajim

попробуй
print urllib.urlopen(" http://auto.ru/%s/"%urllib.quote(brand))

8. slsl /7 06.01.2011 15:44 Gajim

у меня, например, сработало

9. der_FeniXsl /8 06.01.2011 15:48 17314627231294313758179095

а вот да.. если просто сделать brand="ВАЗ" сначала, то работает. а у меня оно через for brand in brands — и так уже не работает. в brands — обычный список []. может в этом дело?.. в списке тот же ВАЗ записан как u'\u0412\u0410\u0417'
может в этом дело?..

10. der_FeniXder_FeniX /9 06.01.2011 15:48 17314627231294313758179095

brand надо как-то сначала перекодировать, наверное..

11. slder_FeniX /10 06.01.2011 15:49 Gajim

Ага, чего-то оно не хочет с юникодом работать.

12. der_FeniXsl /11 06.01.2011 15:52 17314627231294313758179095

йес, я таки сделал эту дуру!! %)
brand = brand.encode('utf-8')
print urllib.urlopen(" http://auto.ru/%s/"%urllib.quote(brand))

13. der_FeniXsl /11 06.01.2011 15:53 17314627231294313758179095

спасибо, за помощь :)

14. slder_FeniX /13 06.01.2011 15:53 Gajim

Да не за что =)

Do you really want to delete ?