it-swarm.com.ru

Могу ли я удалить теги сценария с BeautifulSoup?

Могут ли теги сценариев и все их содержимое быть удалены из HTML с помощью BeautifulSoup, или мне нужно использовать регулярные выражения или что-то еще?

82
Sam
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'lxml')
>>> [s.extract() for s in soup('script')]
>>> soup
baba
138
Fábio Diniz

Обновленный ответ для тех, кому может понадобиться дальнейшая ссылка: правильный ответ. decompose() Вы можете использовать разные способы, но decompose работает на месте.

Пример использования:

soup = BeautifulSoup('<p>This is a slimy text and <i> I am slimer</i></p>')
soup.i.decompose()
print str(soup)
#prints '<p>This is a slimy text and</p>'

Довольно полезно избавиться от таких детритов, как "script", "img" и т.д.

22
Abhishek Dujari

Как указано в ( официальная документация ), вы можете использовать метод extract, чтобы удалить все поддерево, которое соответствует поиску.

import BeautifulSoup
a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>")
[x.extract() for x in a.findAll('script')]
21
Santiago Alessandri