Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove all attributes from element

Tags:

python

lxml

How to remove all attributes of the specific elements througout the document. I'm trying something like this:

from bs4 import UnicodeDammit
from lxml import html

content = open("source.html").read()
document = UnicodeDammit(content, is_html=True)
parser = html.HTMLParser(encoding=document.original_encoding)
root = html.document_fromstring(content, parser=parser)

for attr in root.xpath('.//table/@*'):
    del attr.attrib

Here I'm trying to delete all attributes from all tables in the document using xpath, but it doesn't work.

like image 776
Helvdan Avatar asked Dec 15 '15 09:12

Helvdan


People also ask

How do I delete all attributes?

To remove all attributes of elements, we use removeAttributeNode() method.

How do you remove an element?

Removing an element using the remove() method To remove an element from the DOM, you can also use the remove() method of the element. How it works. First, select the last element of the ul element. Second, call the remove() of that element to remove it from the DOM.

What is the use of all attributes in HTML?

HTML attributes can be used to change the color, size, and other features of HTML elements. For example, you can use an attribute to change the color or size of a font for a text element or the width and height for an image element.


1 Answers

This is one possible way, assuming that you want to remove all attributes of certain element, say table :

for table in root.xpath('//table[@*]'):
    table.attrib.clear()

The code above loop through all table that contains any attribute, then call clear() method of the elemet's attrib property, since the property is simply a python dictionary.

like image 89
har07 Avatar answered Sep 28 '22 17:09

har07