如何用lxml解析日文HTML并生成可读输出?

1 投票
1 回答
1071 浏览
提问于 2025-04-17 21:00

我一直在使用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&#26908;&#32034;</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>

撰写回答