题
作为一个整体,我对lxml和HTML Parsers相当新。 我想知道是否有办法用另一个元素替换树中的元素......
例如我有:
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”。因为“hilited”不是lxml.etree._Element。
这可行吗?
此致
解决方案
关于lxml,
在 doc.replace(block,hilited)
阻止是lxml的Element对象, hilited 是字符串,你无法替换它。
有两种方法可以做到这一点
block.text=hilited
或
body=body.replace(block.text,hilited)
其他提示
如果您是python HTML解析器的新手,可以尝试 BeautifulSoup ,一个html / xml解析器,它允许你修改解析树很容易。
不隶属于 StackOverflow