我想在我的汤里加一段话。该段落应如下所示 -
<p class="test-class"><strong>TEST MESSAGE</strong></p>
我已经有一个可以执行此操作的工作代码。
paragraphTag = soup.new_tag('p')
paragraphTag['class'] = 'test-class'
strongTag = soup.new_tag('strong')
strongTag.append('TEST MESSAGE')
paragraphTag.append(strongTag)
paragraph.insert_before(paragraphTag)
请注意,insert_before 是特意完成的,因为这是我需要 insert_before 的较大代码的一部分。
我的问题是 - 有没有更好的方法来做到这一点?或者我可以编写更小的代码来实现此目的吗?另请注意,我尝试将所有内容放入一个字符串中并将其添加到段落中。但是当我使用 find_all 搜索所有 p 时 标签 这个新添加的 p 标签被跳过。所以我猜它确实没有正确添加。
任何意见都将不胜感激。谢谢
最佳答案
您可以在新 BeautifulSoup()
对象中将代码片段构建为 HTML:
html = '<p class="test-class"><strong>TEST MESSAGE</strong></p>'
snippet = BeautifulSoup(html).p.extract()
paragraph.insert_before(snippet)
.extract()
调用使此工作有效;它将元素从其宿主文档对象模型中分离出来。
演示:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html><body/></html>')
>>> html = '<p class="test-class"><strong>TEST MESSAGE</strong></p>'
>>> snippet = BeautifulSoup(html).p.extract()
>>> snippet
<p class="test-class"><strong>TEST MESSAGE</strong></p>
>>> soup.body.append(snippet)
>>> soup
<html><body><p class="test-class"><strong>TEST MESSAGE</strong></p></body></html>
关于python - 在 beautifulsoup 中构建段落标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23975524/