Python 移除 <div class="comment"> .. 任何内容 .. </div> 之间的所有内容

10 投票
6 回答
6907 浏览
提问于 2025-04-15 21:40

你怎么用Python 2.6来删除所有内容,包括这个<div class="comment"> ....remove all ....</div>呢?

我试了很多方法,用re.sub也没成功。

谢谢!

6 个回答

2

你不能用正则表达式来正确解析HTML。应该使用像 lxmlBeautifulSoup 这样的HTML解析器。

3

使用 lxml.html 这个库:

from lxml import html
doc = html.fromstring(input)
for el in doc.cssselect('div.comment'):
    el.drop_tree()
result = html.tostring(doc)
18

这可以通过使用像 BeautifulSoup 这样的HTML解析器轻松而可靠地完成:

>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup('<body><div>1</div><div class="comment"><strong>2</strong></div></body>')
>>> for div in soup.findAll('div', 'comment'):
...   div.extract()
... 
<div class="comment"><strong>2</strong></div>
>>> soup
<body><div>1</div></body>

想了解更多,可以看看这个问题,里面有关于 为什么用正则表达式解析HTML是个坏主意 的例子。

撰写回答