簡體   English   中英

用lxml.html替換元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM