from bs4 import BeautifulSoup

from collections import Counter

import re


def clean_html(html_text):

    # Gebruik BeautifulSoup om HTML-tags te verwijderen en alleen de tekst te behouden

    soup = BeautifulSoup(html_text, "html.parser")

    return soup.get_text()


def count_words(text):

    # Filter woorden met alleen letters en maak ze allemaal klein om consistentie te behouden

    words = re.findall(r'\b\w+\b', text.lower())

    # Gebruik Counter om de frequentie van elk woord te tellen

    word_counts = Counter(words)

    return word_counts


def main():

    # Lees de inhoud van het HTML-bestand

    with open('voorbeeld.html', 'r', encoding='utf-8') as file:

        html_content = file.read()


    # Reinig de HTML en haal alleen de tekst op

    cleaned_text = clean_html(html_content)


    # Tel de frequentie van de woorden

    word_frequencies = count_words(cleaned_text)


    # Toon de frequentie van de woorden

    for word, count in word_frequencies.most_common():

        print(f"{word}: {count}")


if __name__ == "__main__":

    main()