2010-12-12 12 views
5

क्या किसी के पास कुछ नमूना कोड है जो चित्रों की एक स्ट्रिंग से कुछ HTML टैग को पट्टी करने के लिए पाइथन के सुंदर सूप का उपयोग करने का तरीका बताता है?एक स्ट्रिंग से एचटीएमएल टैग को पट्टी करने के लिए सुंदर सूप का उपयोग

<a></a> 
<b></b> 
<i></i> 

और भी चीजों की तरह:

मैं छोड़कर जावास्क्रिप्ट और एचटीएमएल टैग सभी सब कुछ उन्हें हटाना चाहते

<a onclick=""></a> 

मदद के लिए धन्यवाद - मैं के लिए इंटरनेट पर बहुत ज्यादा नहीं मिल सकता है यह उद्देश्य

उत्तर

8
import BeautifulSoup 

doc = '''<html><head><title>Page title</title></head><body><p id="firstpara" align="center">This is <i>paragraph</i> <a onclick="">one</a>.<p id="secondpara" align="blah">This is <i>paragraph</i> <b>two</b>.</html>''' 
soup = BeautifulSoup.BeautifulSoup(doc) 

for tag in soup.recursiveChildGenerator(): 
    if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'): 
     print(tag) 

पैदावार

<i>paragraph</i> 
<a onclick="">one</a> 
<i>paragraph</i> 
<b>two</b> 

तुम सिर्फ पाठ सामग्री चाहते हैं, आप print(tag.string) करने के लिए print(tag) बदल सकता है।

आप a टैग से onclick="" की तरह एक विशेषता निकालना चाहते हैं, तो आप ऐसा कर सकते हैं:

if isinstance(tag,BeautifulSoup.Tag) and tag.name in ('a','b','i'): 
    if tag.name=='a': 
     del tag['onclick'] 
    print(tag) 
+0

धन्यवाद - किसी भी तरह से onclick = "" – ensnare

+0

जोड़ें 'tag.attrs = [दूर करने के लिए ] 'सभी विशेषताओं को हटाने के लिए प्रिंट करने से पहले। यदि आपको अधिक नियंत्रण की आवश्यकता है, तो टैग.एटर्स केवल (नाम, मूल्य) जोड़े की एक सूची है जिसे आप अपनी जरूरत के अनुसार खेल सकते हैं। – Spacedman

+0

अरे यह वास्तव में सहायक था, बहुत बहुत धन्यवाद। – ensnare

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