我想使用漂亮的汤删除html文件中的所有注释。由于BS4将每个注释作为一种特殊类型的可导航字符串,所以我认为这段代码可以工作:
for comments in soup.find_all('comment'): comments.decompose()
所以那行不通…。如何使用BS4查找所有评论?
您可以将函数传递给find_all()来帮助它检查字符串是否为Comment。
例如我有下面的HTML:
<body> <!-- Branding and main navigation --> <div class="Branding">The Science & Safety Behind Your Favorite Products</div> <div class="l-branding"> <p>Just a brand</p> </div> <!-- test comment here --> <div class="block_content"> <a href="https://www.google.com">Google</a> </div> </body>
码:
from bs4 import BeautifulSoup as BS from bs4 import Comment .... soup = BS(html, 'html.parser') comments = soup.find_all(string=lambda text: isinstance(text, Comment)) for c in comments: print(c) print("===========") c.extract()
输出将是:
Branding and main navigation ============ test comment here ============
顺便说一句,我认为find_all('Comment')不起作用的原因是(来自BeautifulSoup文档):
find_all('Comment')
输入名称的值,您将告诉Beautiful Soup仅考虑具有特定名称的标签。 文本字符串 以及名称不匹配的标记 都将被忽略 。