如何用lxml解析日文HTML并生成可读输出?
我一直在使用Beautiful Soup(美丽汤),在BS4版本中,它的表现非常棒,只需要这样做:
soup = BeautifulSoup(response.read(), from_encoding='Shift_JIS')
如果我在终端打印出来,或者输出到文件,它会把整个HTML内容漂亮地显示成日文。
<p>PR検索</p>
我尝试在lxml中用类似的方法,参考了其他人的问题,
tree = etree.HTML(res.txt, parser=etree.HTMLParser(encoding='shift-jis'))
但是它显示的都是unicode编码。
<p>PR検索</p>
我也尝试了以下方法,但结果还是一样。
tree = etree.HTML(what.text, parser=etree.HTMLParser(encoding='utf-8'))
我用lxml.html先解析页面,然后再把结果传给BS4,想得到我想要的编码结果,不过我还是想知道如何在不使用BS4的情况下得到正确的输出,任何帮助都非常感谢!
1 个回答
1
这是我用得不错的方法:
# -*- coding: utf-8 -*-
from lxml import etree
from lxml.html import fromstring, HTMLParser
data = """<p>PR検索</p>"""
tree = fromstring(data, parser=HTMLParser(encoding='shift-jis'))
print etree.tostring(tree, encoding='shift-jis', method="html")
输出结果是:
<p>PR検索</p>