相关疑难解决方法(0)

迭代解析HTML(使用lxml?)

我目前正在尝试迭代解析一个非常大的HTML文档(我知道.. yuck)以减少使用的内存量.我遇到的问题是我遇到了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'
Run Code Online (Sandbox Code Playgroud)

python lxml html-parsing iterparse

6
推荐指数
2
解决办法
2707
查看次数

标签 统计

html-parsing ×1

iterparse ×1

lxml ×1

python ×1