Remova o atributo class do HTML usando Python e lxml
Como faço para remover atributos de classe do html usando python e lxml?
ExemploEu tenho:
<code><p class="DumbClass">Lorem ipsum dolor sit amet, consectetur adipisicing elit</p> </code>
Eu quero:
<code><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit</p> </code>O que eu tentei até agora
Eu verifiqueilxml.html.clean.Cleaner no entanto, ele não possui um método para remover os atributos de classe. Você pode definirsafe_attrs_only=True
no entanto, isso não remove o atributo de classe.
Pesquisas significativas não resultaram em nada viável. Eu acho que o fato de queclass
é usado em ambos os html e python ainda turva resultados de pesquisa. Muitos dos resultados também parecem lidar estritamente com xml também.
Estou aberto a outros módulos python que também oferecem interfaces humanas.
Muito obrigado.
SoluçãoGraças à resposta do @Dan Roberts abaixo, eu criei a seguinte solução. Apresentado para pessoas que chegam aqui no futuro tentando resolver o mesmo problema.
<code>import lxml.html # Our html string we want to remove the class attribute from html_string = '<p class="DumbClass">Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>' # Parse the html html = lxml.html.fromstring(html_string) # Print out our "Before" print lxml.html.tostring(html) # .xpath below gives us a list of all elements that have a class attribute # xpath syntax explained: # // = select all tags that match our expression regardless of location in doc # * = match any tag # [@class] = match all class attributes for tag in html.xpath('//*[@class]'): # For each element with a class attribute, remove that class attribute tag.attrib.pop('class') # Print out our "After" print lxml.html.tostring(html) </code>