尝试用BS解决html构建问题。
我正在尝试插入新标签:
self.new_soup.body.insert(3, """<div id="file_history"></div>""")
当我检查结果时,我得到:
<div id="file_histor"y></div>
所以我正在插入一个为websafe html进行清理的字符串..
我期望看到的是:
<div id="file_history"></div>
如何在位置3中插入标识为div
的新file_history
代码?
答案 0 :(得分:24)
请参阅how to append a tag上的文档:
soup = BeautifulSoup("<b></b>")
original_tag = soup.b
new_tag = soup.new_tag("a", href="http://www.example.com")
original_tag.append(new_tag)
original_tag
# <b><a href="http://www.example.com"></a></b>
new_tag.string = "Link text."
original_tag
# <b><a href="http://www.example.com">Link text.</a></b>
答案 1 :(得分:12)
使用工厂方法创建新元素:
new_tag = self.new_soup.new_tag('div', id='file_history')
并插入:
self.new_soup.body.insert(3, new_tag)
答案 2 :(得分:8)
其他答案直接来自文档。这是捷径:
from bs4 import BeautifulSoup
temp_soup = BeautifulSoup('<div id="file_history"></div>')
# BeautifulSoup automatically add <html> and <body> tags
# There is only one 'div' tag, so it's the only member in the 'contents' list
div_tag = temp_soup.html.body.contents[0]
# Or more simply
div_tag = temp_soup.html.body.div
your_new_soup.body.insert(3, div_tag)