Bạn có thể vượt qua một chức năng để find_all() để giúp kiểm tra xem chuỗi có phải là Nhận xét hay không.
Ví dụ tôi có dưới 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>
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()
đầu ra sẽ là:
Branding and main navigation
============
test comment here
============
BTW, tôi nghĩ lý do tại sao find_all('Comment')
không công việc là (từ tài liệu của BeautifulSoup):
Chuyển giá trị cho tên và bạn sẽ cho Beautiful Soup biết chỉ xem xét các thẻ có tên nhất định. Chuỗi văn bản sẽ bị bỏ qua, cũng như các thẻ có tên không khớp.
[answer] (http://stackoverflow.com/a/3507360/771848) này vẫn hoạt động mà tôi cho là vậy. – alecxe
Tôi nhận được "nhận xét tên chung" không được xác định " – Joseph
Tôi nhận ra đây là cũ, nhưng @Joseph, nếu bạn nhập Nhận xét từ bs4, nó sẽ hoạt động – atarw