Я хочу проанализировать часть html-страницы, скажем
my_string = """
<p>Some text. Some text. Some text. Some text. Some text. Some text.
<a href="#">Link1</a>
<a href="#">Link2</a>
</p>
<img src="image.png" />
<p>One more paragraph</p>
"""
Я передаю эту строку в BeautifulSoup:
soup = BeautifulSoup(my_string)
# add rel="nofollow" to <a> tags
# return comment to the template
Но во время синтаксического анализа BeautifulSoup добавляет теги <html>, <head> и <body> (при использовании парсеров lxml или html5lib), и мне они не нужны в моем коде. Единственный способ, который я нашел до сих пор, чтобы избежать этого, - это использовать html.parser.
Интересно, есть ли способ избавиться от лишних тегов с помощью lxml — самого быстрого парсера.
ОБНОВЛЕНИЕ
Изначально мой вопрос был задан некорректно. Теперь я удалил обертку <div> из своего примера, так как обычный пользователь не использует этот тег. По этой причине мы не можем использовать метод .extract() для избавления от тегов <html>, <head> и <body>.