2011-09-19 18 views
6

से कुछ विशेषताओं को हटाएं मैं HTML कोड से आईडी, शैली, कक्षा इत्यादि जैसे कुछ विशेषताओं को कैसे हटा सकता हूं?एचटीएमएल टैग

मैंने सोचा कि मैं lxml.html.clean module का उपयोग कर सकता हूं, लेकिन जैसा कि यह निकला, मैं केवल Clean(style=True).clean_html(code) के साथ शैली विशेषताओं को हटा सकता हूं। मैं इस कार्य के लिए नियमित अभिव्यक्तियों का उपयोग नहीं करना चाहता (गुण बदल सकते हैं)।

मैं करना चाहते हैं क्या:

from lxml.html.clean import Cleaner 

code = '<tr id="ctl00_Content_AdManagementPreview_DetailView_divNova" class="Extended" style="display: none;">' 

cleaner = Cleaner(style=True, id=True, class=True) 
cleaned = cleaner.clean_html(code) 

print cleaned 
'<tr>' 

अग्रिम धन्यवाद!

उत्तर

10

cleaner.Cleaner.__call__ में safe_attrs_only पैरामीटर है। True पर सेट होने पर, केवल clean.defs.safe_attrs में विशेषताएँ संरक्षित हैं। आप clean.defs.safe_attrs बदलकर किसी भी या सभी विशेषताओं को हटा सकते हैं। जब आप पूरा कर लें तो इसे वापस बदलना सुनिश्चित करें।

import lxml.html.clean as clean 

code = '<tr id="ctl00_Content_AdManagementPreview_DetailView_divNova" class="Extended" style="display: none;">' 

safe_attrs = clean.defs.safe_attrs 
cleaner = clean.Cleaner(safe_attrs_only=True, safe_attrs=frozenset()) 
cleansed = cleaner.clean_html(code) 

print(cleansed) 

पैदावार

<tr></tr> 
+0

धन्यवाद, कि वास्तव में मैं क्या जरूरत है! – naeg

+0

मुझे इस तकनीक को lxml-3.2.3 में काम करने में परेशानी हो रही है। यह जानकर हुआ कि क्या उन्होंने कुछ बदल दिया है? – Xavi

+0

इसे v3.2.3 में काम करने के लिए मुझे क्लीनर = क्लीन. क्लीनर (...) 'के बाद' cleaner.safe_attrs = clean.defs.safe_attrs' जोड़ना पड़ा। – Xavi

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