Python 移除 <div class="comment"> .. 任何内容 .. </div> 之间的所有内容
你怎么用Python 2.6来删除所有内容,包括这个<div class="comment"> ....remove all ....</div>
呢?
我试了很多方法,用re.sub也没成功。
谢谢!
6 个回答
2
你不能用正则表达式来正确解析HTML。应该使用像 lxml 或 BeautifulSoup 这样的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是个坏主意 的例子。