如何在美丽的汤中保持 html 实体(如"☒")完好无损?



我的目标是使用beautiful soup读取html文档,将ids添加到一些标签并将html写回文件。

html文档中有html实体,如&#9746代表。当我创建一个漂亮的汤对象时,html实体被转换为。当我使用str(soup)将汤写回html时,html文件包含而不是&#9746。在浏览器中打开它,当我想要时,结果是☒

我尝试使用str(soup.encode(formatter='html')),它确实转换为UTF-8编码,但浏览器中的html显示xe2x98x92

我猜我错过了一些简单的东西。有什么想法吗,如何在美丽的汤处理后保持原始文件中的特殊字符完整?

我明白了。这其实很简单,正如在这个答案中所说的。

必须使用encoding='utf-8'。链接中的答案:

from bs4 import BeautifulSoup
a=BeautifulSoup('<p class="t5">&#9746; &#x20b9; 10,000 or $ 133.46</p>')
with open(filename,'w', encoding='utf-8') as infile:
infile.write(str(a))  # OR infile.write(a.prettify())

相关内容

最新更新