2017-02-13 1 views
0

Pythonでlxmlライブラリを使用してhtmlページ(Youtubeビデオタイトル)でデータを取得すると、正しくテキストが返されないこのように「à・à・ලනA・ටයනà」ここPython 2.x IDLE Unicodeフォントがlxmlを使用しているときに表示されない

私のコードは、私は必要

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'] 

言語があるが、シンハラ語であり、そしてそれはユニコードです。

+1

あなたの正確なまたは完全なコードではありません(あなたが 'return'を持っています文は表示されません)。質問を編集して、問題を示す実行可能な例を含めてください。 – Duncan

答えて

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) 
1

明らかにタイトルはバイト文字列です。.decode()をUnicodeにする必要があります。 UTF-8と、次にとしてエンコードされている場合、問題のタイトル「පේස්බුක්මැසේජ්එක」がLatin-1としてデコードされ/表示され、あなたが不平を言う。

単純.decode('utf-8')で問題を解決する必要があります。

関連する問題