1

を介してlxmlとxpathを使用して、htmlタグ属性からテキストを引き出していますtag.attrib['title']。私は得る:

Málaga Airport

私が見ているのと同じURLのブラウザで:

Málaga Airport

前者を後者に変換するにはどうすればよいですか?

4

1 に答える 1

2

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
于 2012-12-09T01:01:31.943 に答える