使用lxml时不显示Python 2.x IDLE Unicode字体

时间:2017-02-13 15:35:05

标签: python python-2.7 unicode lxml

当我在python中使用lxml库来获取html页面上的数据时(Youtube视频标题),它没有正确返回文本它返回一个文本像这样“à·à·à¶½à¶±à·à¶§à ¶ºà¶±à“

这是我的代码,

page = requests.get("https://www.youtube.com/watch?v=MZMapfEg5g8")
source = html.fromstring(page.content)
links = source.xpath('//link[@type="text/xml+oembed"]')
for href in links:
    return href.attrib['title']

我需要的语言是sinhala,它是unicode。

2 个答案:

答案 0 :(得分:1)

显然你得到的标题是一个字节字符串,你需要.decode()它变成Unicode。有问题的标题,"පේස්බුක්මැසේජ්එක",当编码为UTF-8且然后解码/显示为Latin-1时,会给出您抱怨的输出。

一个简单的.decode('utf-8')应该可以解决问题。

答案 1 :(得分:1)

使用:

source = html.fromstring(page.text)

使用请求库,page.text将是已解码的文本。 page.content是原始字节内容,page.encoding是页面的编码。

总结:

import requests
from lxml import html
page = requests.get("https://www.youtube.com/watch?v=MZMapfEg5g8")
source = html.fromstring(page.text)
links = source.xpath('//link[@type="text/xml+oembed"]')
for href in links:
    print href.attrib['title']

输出(需要支持字符/字体的终端/ IDE):

පේස් බුක් මැසේජ් එක (Facebook Messege)