Есть сохранённые файлы HTML, в которых много ненужного: джаваскрипты, стили, SVG… Пытаюсь удалить.
Я попробовал так:
import lxml.html
h = lxml.html.parse('page001.html')
root = h.getroot()
for e in root.iter():
if type(e.tag) != str:
e.drop_tree()
if e.tag in ('link', 'script', 'svg', 'footer', 'style') and ... e.attrib ... :
e.drop_tree()
И затем посмотрел результат print(lxml.etree.tostring(root, pretty_print=True).decode())
В результате удалились линки и скрипты из секции head (например, root[0][12]), но не удалился SVG из глубин body (root[1][0][1][3][0][0][0][2][0][0][0]).
Немного покопавшись, понял: нельзя удалять элементы массива, по которому идёт for от начала к концу (в обратном направлении — можно). Но тогда почему это работало для первых элементов?