[英]Replacing elements with 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是string,你不能替換它。
有兩種方法可以做到這一點
block.text=hilited
要么
body=body.replace(block.text,hilited)
如果您是python HTML解析器的新手,可以嘗試使用BeautifulSoup ,一個html / xml解析器,它可以讓您輕松修改解析樹 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.