Я хочу, чтобы разобрать часть HTML страницы, скажемBeautifulSoup: разобрать только часть страницы
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 - самый быстрый парсер.
UPDATE
Первоначально мой вопрос был задан неправильно. Теперь я удалил обертку <div>
из моего примера, поскольку обычный пользователь не использует этот тег. По этой причине мы не можем использовать метод .extract()
, чтобы избавиться от <html>
, <head>
и <body>
тегов.
Вы пробовали использовать MinimalSoup вместо BeautifulSoup? (Такая же библиотека, другой конструктор). Он должен быть менее строгим в этом отношении. –
Я пробовал, но я не мог понять, как это работает. –