を介してlxmlとxpathを使用して、htmlタグ属性からテキストを引き出していますtag.attrib['title']
。私は得る:
Málaga Airport
私が見ているのと同じURLのブラウザで:
Málaga Airport
前者を後者に変換するにはどうすればよいですか?
lxml htmlパーサーは、バイト文字列の「latin1」エンコーディングを想定しているようです。
したがって、入力が「latin1」(または「ascii」)としてエンコードされていない限り、エンコードを明示的に指定する必要があります。この場合、「utf-8」である必要があるように見えます。
>>> from lxml import etree
>>>
>>> html = u"""
... <html>
... <head><title>Test</title></head>
... <body>
... <p test="Málaga">Example</p>
... </body>
... </html>
... """
>>>
>>> html = html.encode('utf-8')
>>>
>>> parser = etree.HTMLParser()
>>> tree = etree.fromstring(html, parser)
>>> print tree.xpath('//p/@test')[0]
Málaga
>>>
>>> parser = etree.HTMLParser(encoding='utf-8')
>>> tree = etree.fromstring(html, parser)
>>> print tree.xpath('//p/@test')[0]
Málaga