สามารถลบแท็กสคริปต์และเนื้อหาทั้งหมดออกจาก 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')]