我有一些文本:
text = <p><b>test</b><br/></p>
我读了美丽的汤4:
soup = BeautifulSoup(text, "html.parser") # soup: <p><b>test</b><br/></p>
然后我想获得文本节点:
text_nodes = soup.find_all(text=True)
但是转义的HTML在这个过程中被取消转义:text_nodes: ['<b>test</b>']
如何防止find_all()
步骤转换转义的HTML标记?
对于text=True
,我认为没有保持字符串原样的选项。
我的解决方案只是用循环逃避结果
from bs4 import BeautifulSoup
from html import escape
text = '<p><b>test</b><br/></p>'
soup = BeautifulSoup(text, "html.parser")
text_nodes = [escape(x) for x in soup.strings]
print(text_nodes)
# ['<b>test</b>']
soup.strings
是soup.find_all(text=True)
的较短版本。