Форум сайта python.su
diam123Ещё раз тонко вам намекаю, что нет, проблема в другом.
Ishodya iz etogo pochemu-to kajetsya chto problema imenno pri vivode v konsol`
alphavilleOMG выкидывай lxml или ищите как его вразумить! Он уже возвращает уникодные строки с закодированными символами внутри - ужас.
Привожу код:
print vakansii.encode('raw-unicode-escape')
Офлайн
ребята, тут то же самое без lxml:
# -*- coding:utf-8 -*-
import httplib, urllib
host = 'www.yandex.ru'
headers = {'Host':host,
'User-agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'ru,en-us;q=0.7,en;q=0.3',
'Accept-Charset': 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Keep-Alive': '300',
'Connection': 'keep-alive'}
conn = httplib.HTTPConnection(host)
conn.request('GET', '/',{},headers)
resp = conn.getresponse()
print resp.status
data = resp.read()
data = data.split("""company.yandex.ru/inside/job/">""")[1]
data = data.split("</a>")[0]
print repr( data )
Отредактировано (Окт. 14, 2009 16:37:33)
Офлайн
alphavilleНу вот уже лучше - что логично. Теперь это обычная байтовая строчка в кодировке utf-8. С ней можно нормально работать.
ребята, тут то же самое без lxml:
Офлайн
#!/usr/bin/python
# -*- coding: utf-8 -*-
s = '\xd0\x9a\xd1\x83\xd1\x80\xd1\x83\xd0\xbc\xd0\xbe\xd1\x87'
s1 = unicode(s,"UTF-8")
print s1.encode('utf-8')
Офлайн
Daevaornдавайте не будем трогать lxml :) очень хорошая библиотека, и по скорости и по простоте использования и
Но срочно ищите альтернативу lxml или как его заставить так не делать.
Отредактировано (Окт. 14, 2009 17:32:20)
Офлайн
pyuserДак как? Я хочу с ней работать! У вас получалось парсить ей кириллицу?Daevaornдавайте не будем трогать lxml :) очень хорошая библиотека, и по скорости и по простоте использования и
Но срочно ищите альтернативу lxml или как его заставить так не делать.
на грабли с кодировками, слава Богу, еще ни разу не наступил
хотите получить строку в определенной кодировке, так просто укажите ее :) у метода tostring есть параметр encoding
еще раз тему перечитал. возникли сомнения в плане оси, мы про виндовоз говорим?
Офлайн
pyuserНет позвольте, я всё-таки трону.
давайте не будем трогать lxml smile
html = lxml.html.document_fromstring(data.decode('utf8'))
pyuserУ HtmlElement нету tostring метода.
хотите получить строку в определенной кодировке, так просто укажите ее smile у метода tostring есть параметр encoding
pyuser
еще раз тему перечитал. возникли сомнения в плане оси, мы про виндовоз говорим?
alphaville
File “C:\Python25\lib\encodings\cp866.py”, line 12, in encode
Офлайн
clopomorтолько последняя строчка print s1.encode('cp866')#!/usr/bin/python
# -*- coding: utf-8 -*-
s = '\xd0\x9a\xd1\x83\xd1\x80\xd1\x83\xd0\xbc\xd0\xbe\xd1\x87'
s1 = unicode(s,"UTF-8")
print s1.encode('utf-8')
Офлайн
html = lxml.html.document_fromstring(data.decode('utf8'))
Офлайн