Ответ 1
Используйте метод factory для создания новых элементов:
new_tag = self.new_soup.new_tag('div', id='file_history')
и вставьте его:
self.new_soup.body.insert(3, new_tag)
Попытка получить голову вокруг html-конструкции с BS.
Я пытаюсь вставить новый тег:
self.new_soup.body.insert(3, """<div id="file_history"></div>""")
когда я проверяю результат, я получаю:
<div id="file_histor"y></div>
Итак, я вставляю строку, которая дезинфицирована для websafe html..
Я ожидаю увидеть следующее:
<div id="file_history"></div>
Как вставить новый тег div
в позицию 3 с идентификатором file_history
?
Используйте метод factory для создания новых элементов:
new_tag = self.new_soup.new_tag('div', id='file_history')
и вставьте его:
self.new_soup.body.insert(3, new_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>
Другие ответы прямо из документации. Вот ярлык:
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 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)