如何使用lxml.html.document_fromtstring()使用python和lxml删除标记内容

时间:2014-05-04 22:30:13

标签: python xml lxml.html

我想删除<pre><code></code></pre>标记之间的内容。我查看了remove()strip_elements()以及BeautifulSoup方法,但我看到的所有示例都只包含一个标记,例如仅<pre><code>。如果它们一起存在,我怎么能使用它们(比如stackoverflow帖子中格式化的代码块)。

编辑:如果我有这样的事情(这是stackoverflow帖子中格式化代码的方式)

<pre><code> some code stuff </code></pre>然后我想删除包含标签的<pre><code></code></pre>之间的所有内容。

已编辑代码: 我在下面给出了代码,但它在行lxml.etree.XMLSyntaxError: Extra content at the end of the document处引发了doc = doc = etree.fromstring(record[1])错误:

from lxml import etree

 cur.execute('SELECT Title, Body FROM posts')

 for item in cur:
    record = list(item)
    doc = etree.fromstring(record[1]) # error thrown here

    for node in doc.xpath('pre[code]'):
        doc.remove(node)

    record[1] = etree.tostring(doc)
    page = lxml.html.document_fromstring(record[1])
    record[0] = str(record[0])
    record[1] = str(page.text_content()) # Stripping HTML Tags
    print record[1]

更新:我了解我所拥有的XML格式不是标准格式,因此我需要使用lxml.html.document_fromtstring()来删除标记内容而不是{{1} }。任何人都可以为我提供一个示例,因为我找不到etree.fromstring()的任何实现来删除标记的内容。

0 个答案:

没有答案