Итеративный разбор HTML (с lxml?)

В настоящее время я пытаюсь итеративно анализировать очень большой HTML-документ (я знаю ... хм), чтобы уменьшить объем используемой памяти. Проблема в том, что я получаю ошибки синтаксиса XML, такие как:

lxml.etree.XMLSyntaxError: Attribute name redefined, line 134, column 59

Это тогда заставляет все остановиться.

Есть ли способ итеративно анализировать HTML, не подавляя синтаксические ошибки?

В данный момент я извлекаю номер строки из исключения синтаксической ошибки XML, удаляю эту строку из документа и затем перезапускаю процесс. Похоже, довольно отвратительное решение. Есть ли способ лучше?

Редактировать:

Вот что я сейчас делаю:

context = etree.iterparse(tfile, events=('start', 'end'), html=True)
in_table = False
header_row = True
while context:
    try:
        event, el = context.next()

        # do something

        # remove old elements
        while el.getprevious() is not None:
            del el.getparent()[0]

    except etree.XMLSyntaxError, e:
        print e.msg
        lineno = int(re.search(r'line (\d+),', e.msg).group(1))
        remove_line(tfilename, lineno)
        tfile = open(tfilename)
        context = etree.iterparse(tfile, events=('start', 'end'), html=True)
    except KeyError:
        print 'oops keyerror'

Ответы на вопрос(4)

Ваш ответ на вопрос