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
[s.extract() for s in soup(['iframe', 'script'])]
여러 개의 태그를 사용하는 것을 참고 목록, 매개 변수가되어야합니다
'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
합니까? 같은가요?
<html><head></head><body><p>baba</p></body></html>
향후 참조가 필요한 사람들을위한 업데이트 된 답변 : 정답은 다음과 같습니다.
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'등과 같은 잔해물을 제거하는 데 매우 유용합니다.
decompose
와는 extract
입니다 후자의 반환 전 단지 그것을 파괴하는 반면, 제거 된 것. 따라서 이것은 질문에 대한 더 정확한 답이지만 다른 방법이 작동합니다.
remove
내용에 대한 OP에 따라 정답을 말한 것입니다 . 종종 불필요한 태그 및 서식의 HTML을 정리하는 데 사용됩니다.
( 공식 문서 )에 명시된 것처럼 extract
검색과 일치하는 모든 하위 트리를 제거 하는 방법을 사용할 수 있습니다 .
import BeautifulSoup
a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>")
[x.extract() for x in a.findAll('script')]
extract
할 특정 요소를 선택하기 만하면 됩니다. [x.extract() for x in a.select('span.className')]