作为一个整体,我对lxml和HTML解析器是相当陌生的。我想知道是否有一种方法可以将树中的元素替换为另一个元素……
例如,我有:
body = """<code> def function(arg): print arg </code> Blah blah blah <code> int main() { return 0; } </code> """
doc = lxml.html.fromstring(body)
codeblocks = doc.cssselect('code')
for block in codeblocks:
lexer = guess_lexer(block.text_content())
hilited = highlight(block.text_content(), lexer, HtmlFormatter())
doc.replace(block, hilited)我想做一些类似的事情,但这会产生一个"TypeError“,因为”lxml.etree._Element“不是一个hilited。
这可行吗?
致以敬意,
发布于 2009-11-29 00:19:23
关于lxml,
在doc.replace(block, hilited)中
块的是lxml的Element对象,使用的是string,您不能替换它。
有两种方法可以做到这一点
block.text=hilited 或
body=body.replace(block.text,hilited)发布于 2009-11-28 23:35:06
如果您不熟悉python HTML解析器,可以尝试使用BeautifulSoup,这是一种允许modify the parse tree easily的html/xml解析器。
https://stackoverflow.com/questions/1812764
复制相似问题