สามารถลบแท็กสคริปต์และเนื้อหาทั้งหมดออกจาก HTML ด้วย BeautifulSoup ได้หรือไม่หรือต้องใช้นิพจน์ทั่วไปหรืออย่างอื่น
สามารถลบแท็กสคริปต์และเนื้อหาทั้งหมดออกจาก HTML ด้วย BeautifulSoup ได้หรือไม่หรือต้องใช้นิพจน์ทั่วไปหรืออย่างอื่น
คำตอบ:
>>> 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เนื้อหา มักใช้สำหรับการล้าง 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')]