用lxml.html替换元素

作为一个整体,我对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)

block是lxml的Element对象, hilited是字符串,你不能取代它。

有两种方法可以做到这一点

block.text=hilited 

要么

body=body.replace(block.text,hilited)

如果你是python HTML解析器的新手,你可以试试BeautifulSoup,一个html / xml解析器,它可以让你轻松修改解析树。

链接地址: http://www.djcxy.com/p/43765.html

上一篇: Replacing elements with lxml.html

下一篇: setuptools test hides import errors. How to have better info?