通过 beautifulsoup 安全地删除标签中的孩子

Posted

技术标签:

【中文标题】通过 beautifulsoup 安全地删除标签中的孩子【英文标题】:Safely remove children in a tag by beautifulsoup 【发布时间】:2020-05-02 00:30:42 【问题描述】:

假设现在我有一个标签div 通过 findAll 在汤中获得。

div = <div>text1<span>text2<\span>text3</div>

请注意,我想保留一些外部结构。例如,div.previous_element 将连接到汤中的其他标签。现在我解开了跨度,以便

div.contents=['text1','text2','text3']

我想要的是:

    div.contents=['text1text2text3'] div.string 不是无。 与汤的连接未切断(div.previous_element 也可以工作)

【问题讨论】:

您能否提供所需输出的外观。 我希望 div=text1text2text3。另外,div.string='text1text2text3'(不是没有)。 【参考方案1】:

试试这个。

from simplified_scrapy.simplified_doc import SimplifiedDoc
html='''<div>text1<span>text2<\span>text3</div>'''
doc = SimplifiedDoc(html)
div = doc.div
print (div)
print (div.text)

结果:

'tag': 'div', 'html': 'text1<span>text2<\\span>text3'
text1text2text3

可以获取SimplifiedDochere的例子

【讨论】:

以上是关于通过 beautifulsoup 安全地删除标签中的孩子的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.8 - BeautifulSoup 4 - unwrap() 不会删除所有标签

解析目录中的 html 文件并使用 BeautifulSoup 删除特定标签

使用Beautifulsoup时删除标签

使用 Google Refine/OpenRefine & Jsoup/BeautifulSoup 解析和删除 HTML 标签

Beautifulsoup 将标签中的文本通过 <br/> 拆分

如何通过beautifulsoup中的“class”属性捕捉标签? [复制]