我有一些文字:
text = <p><b>test</b><br/></p>
我读过beautiful soup 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标记?
答案 0 :(得分:1)
对于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)
的缩写。