在美丽的汤中有没有办法计算html页面中的标签数量

时间:2012-12-13 04:35:51

标签: python beautifulsoup

我正在考虑在python中创建一个字典,其中键是html标记名称,值是标记出现的次数。有没有办法用美丽的汤或其他东西做到这一点?

2 个答案:

答案 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