Sie eine Funktion übergeben können find_all(), um zu überprüfen, ob die Zeichenfolge ein Kommentar ist.
Zum Beispiel habe ich unten html haben:
<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>
Code:
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.decompose()
die Ausgabe wäre:
Branding and main navigation
============
test comment here
============
BTW, ich glaube, der Grund, warum find_all('Comment')
nicht der Fall ist Arbeit ist (aus BeautifulSoup Dokument):
Übergeben Sie einen Wert für name und Sie werden Beautiful Soup sagen, dass nur Tags mit bestimmten Namen berücksichtigt werden sollen. Textzeichenfolgen werden ignoriert, wie auch Tags, deren Namen nicht übereinstimmen.
Diese [Antwort] (http:// Stackoverflow.com/a/3507360/771848) sollte immer noch funktionieren, nehme ich an. – alecxe
Ich bekomme "globalen Namen 'Kommentar' ist nicht definiert" – Joseph
Ich weiß, das ist alt, aber @Joseph, wenn Sie Kommentar von BS4 importieren, sollte es funktionieren – atarw