当我在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。
答案 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)