我想删除<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()
的任何实现来删除标记的内容。