我正在考虑在python中创建一个字典,其中键是html标记名称,值是标记出现的次数。有没有办法用美丽的汤或其他东西做到这一点?
答案 0 :(得分:23)
BeautifulSoup非常适合HTML解析,你当然可以将它用于此目的。这将非常简单:
from bs4 import BeautifulSoup as BS
def num_apperances_of_tag(tag_name, html):
soup = BS(html)
return len(soup.find_all(tag_name))
答案 1 :(得分:6)
使用BeautifulSoup,您可以通过省略搜索条件来搜索所有标签:
# print all tags
for tag in soup.findAll():
print tag.name # TODO: add/update dict
如果您只对出现的次数感兴趣,那么BeautifulSoup可能有点矫枉过正,在这种情况下您可以使用HTMLParser
代替:
from HTMLParser import HTMLParser
class print_tags(HTMLParser):
def handle_starttag(self, tag, attrs):
print tag # TODO: add/update dict
parser = print_tags()
parser.feed(html)
这将产生相同的输出。
要创建{ 'tag' : count }
字典,您可以使用collections.defaultdict
:
from collections import defaultdict
occurrences = defaultdict(int)
# ...
occurrences[tag_name] += 1