[python] BeautifulSoup으로 스크립트 태그를 제거 할 수 있습니까?

BeautifulSoup을 사용하여 스크립트 태그와 모든 내용을 HTML에서 제거 할 수 있습니까? 아니면 정규식이나 다른 것을 사용해야합니까?



답변

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'lxml')
>>> for s in soup.select('script'):
>>>    s.extract()
>>> soup
baba


답변

향후 참조가 필요한 사람들을위한 업데이트 된 답변 : 정답은 다음과 같습니다.
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’등과 같은 잔해물을 제거하는 데 매우 유용합니다.


답변

( 공식 문서 )에 명시된 것처럼 extract검색과 일치하는 모든 하위 트리를 제거 하는 방법을 사용할 수 있습니다 .

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


답변