9

私はPythonで辞書を作成することを検討しています。ここで、キーはhtmlタグ名であり、値はタグが出現した回数です。美しいスープや何か他のものでこれを行う方法はありますか?

4

3 に答える 3

32

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))
于 2012-12-13T05:19:17.307 に答える
11

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
于 2012-12-13T05:25:27.480 に答える