2011-09-19 7 views
6

HTML 코드에서 ID, 스타일, 클래스 등의 특정 속성을 제거하려면 어떻게해야합니까?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 = clean.Cleaner (...) '다음에'cleaner.safe_attrs = clean.defs.safe_attrs'를 추가해야했습니다. – Xavi

관련 문제