2011-04-08 11 views
56

स्क्रिप्ट टैग और उनकी सभी सामग्री HTMLS से सुंदर सूप के साथ हटा दी जा सकती है, या क्या मुझे नियमित अभिव्यक्तियों का उपयोग करना है या कुछ और?क्या मैं सुंदर सूप के साथ स्क्रिप्ट टैग हटा सकता हूं?

उत्तर

110
>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'lxml') 
>>> [s.extract() for s in soup('script')] 
>>> soup 
baba 
+0

हटाए जाने वाले अतिरिक्त टैग पर श्रृंखला का सबसे अच्छा तरीका क्या है? अगर मैं सूप ('स्क्रिप्ट') में एस के लिए [s.extract() के साथ [s.extract() सूप ('iframe') में एस के लिए [s.extract()] के साथ एक दूसरे के बाद कमांड दोहराता हूं, तो अभी यह काम करता है और इसी तरह , लेकिन अगर मैं उन्हें सूप ('iframe', 'script') में एस के लिए [s.extract() की तरह श्रृंखला देता हूं। – Ila

+6

@Ali आपको सूप (['iframe', 'script']) में एस के लिए '[s.extract() का उपयोग करना होगा]] ध्यान दें कि एकाधिक टैग का उपयोग करने के लिए, पैरामीटर एक सूची होना चाहिए –

+0

@ FábioDiniz कैसे होगा मैं कुछ इस तरह निकाला हूं: '' बाबा ''? क्या यह वही है? – user2883071

12

के रूप में (official documentation) में कहा गया है कि आप सभी सबट्री कि खोज से मेल खाता हटाने के लिए extract विधि का उपयोग कर सकते हैं।

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

जो लोग भविष्य में संदर्भ के लिए आवश्यकता हो सकती है के लिए अपडेट किया गया जवाब: सही जवाब है। 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>' 

सुंदर उपयोगी 'स्क्रिप्ट', 'img' तो और आगे की तरह कतरे से छुटकारा पाने के।

+1

'विघटन' और 'निकालने' के बीच का अंतर यह है कि उत्तरार्द्ध उस चीज़ को वापस कर देता है जिसे हटा दिया गया था, जबकि पूर्व इसे नष्ट कर देता है। तो यह सवाल का अधिक सटीक उत्तर है, लेकिन अन्य विधियां काम करती हैं। – Mike

+0

विघटन स्क्रिप्ट टैग की सामग्री को नहीं हटाता है, यह केवल टैग को हटा देता है। –

+0

मैं आपकी टिप्पणियों से सहमत हूं। यही कारण है कि मैंने ओपी के अनुसार सही उत्तर कहा जो सामग्री को 'निकालना' था। अक्सर अनियंत्रित टैग और स्वरूपण के HTML की सफाई के लिए उपयोग किया जाता है। – Vangel

संबंधित मुद्दे