Dapatkah tag skrip dan semua kontennya dihapus dari HTML dengan BeautifulSoup, atau apakah saya harus menggunakan Ekspresi Reguler atau yang lainnya?
93
Dapatkah tag skrip dan semua kontennya dihapus dari HTML dengan BeautifulSoup, atau apakah saya harus menggunakan Ekspresi Reguler atau yang lainnya?
>>> 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'])]
Perhatikan bahwa untuk menggunakan beberapa tag, parameternya harus berupa daftar'<script class="blah">a</script>baba<script id="blahhhh">b</script>'
? Apakah itu sama?<html><head></head><body><p>baba</p></body></html>
Jawaban terbaru untuk mereka yang mungkin membutuhkan referensi di masa mendatang: Jawaban yang benar adalah.
decompose()
Anda dapat menggunakan cara yang berbeda tetapidecompose
bekerja di tempat.Contoh penggunaan:
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>'
Cukup berguna untuk menghilangkan detritus seperti 'script', 'img' dan lain sebagainya.
sumber
decompose
danextract
adalah bahwa yang terakhir mengembalikan hal yang telah dihapus, sedangkan yang pertama hanya menghancurkannya. Jadi ini adalah jawaban yang lebih tepat untuk pertanyaan tersebut, tetapi metode lain berhasil.remove
isinya. Sering digunakan untuk membersihkan HTML dari tag dan pemformatan yang tidak dibutuhkan.Seperti yang dinyatakan di ( dokumentasi resmi ) Anda dapat menggunakan
extract
metode ini untuk menghapus semua subpohon yang cocok dengan pencarian.import BeautifulSoup a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>") [x.extract() for x in a.findAll('script')]
sumber
extract
.[x.extract() for x in a.select('span.className')]