Привет, все, что я пытаюсь извлечь описание "META" из веб-страницы, используя libxml для Python. Когда он сталкивается с UTF-символами, кажется, он задыхается и отображает мусорные символы. Однако при получении данных через регулярные выражения я получаю символы unicode просто отлично. Я что-то не так делаю с libxml?
спасибо
''' test encoding issues with utf8 ''' from lxml.html import fromstring from lxml.html.clean import Cleaner import urllib2 import re url = 'http://www.youtube.com/watch?v=LE-JN7_rxtE' page = urllib2.urlopen(url).read() xmldoc = fromstring(page) desc = xmldoc.xpath('/html/head/meta[@name="description"]/@content') meta_description = desc[0].strip() print "**** LIBXML TEST ****\n" print meta_description print "**** REGEX TEST ******" reg = re.compile(r'<meta name="description" content="(.*)">') for desc in reg.findall(page): print desc
ВЫХОДЫ:
**** LIBXML TEST **** My name is Hikakin.<br>I'm Japanese Beatboxer.<br><br>HIKAKIN Official Blog<br>http://ameblo.jp/hikakin/<br><br>ãã³çã³ãã¥<br>http://com.nicovideo.jp/community/co313576<br><br>â»å¾¡ç¨ã®æ¹ã¯Youtubeã®ã¡ãã»ã¼ã¸ã¾ã... **** REGEX TEST ****** My name is Hikakin.<br>I'm Japanese Beatboxer.<br><br>HIKAKIN Official Blog<br>http://ameblo.jp/hikakin/<br><br>ニコ生コミュ<br>http://com.nicovideo.jp/community/co313576<br><br>※御用の方はYoutubeのメッセージまた...
Помогает ли это?
xmldoc = fromstring(page.decode('utf-8'))
В lxml вам нужно передать кодировку парсеру.Для разбора HTML / XML:
url = 'http://en.wikipedia.org/wiki/' + wiki_word parser = lxml.etree.HTMLParser(encoding='utf-8') # you can either use an XMLParser() page = urllib2.urlopen(url) doc = etree.parse(page, parser) T = doc.xpath('//p//text()') text = u''.join(T).encode('utf-8')
Вполне возможно, что проблема в том, что ваша консоль не поддерживает отображение символов Unicode.Попробуйте передать вывод в файл, а затем открыть его во что-то, что может отображать Unicode.