# imports
from bs4 import BeautifulSoup
import requests
import csv

# this function returns a soup page object
def getPage(url):
    r = requests.get(url)
    data = r.text
    spobj = BeautifulSoup(data, "lxml")
    return spobj

# scraper website: greyhound-data.com
def main():

    fobj = open('article-data.csv','w') # open file
    csvw = csv.writer(fobj) #create scv writer

    div_url = "https://www.heise.de/thema/https"

    #div mit class keywordliste wird gefunden
    content = getPage(div_url).find("div",{"class":"keywordliste"})

    list = [] # eine leere Liste erzeugen
    divs = content.findAll("div") # alle "div"s werden gesucht
    for article in divs : # die Schleife geht durch alle divs
        # wenn ein div ein Attribut data-sourcechannel hat
        if article.has_attr ("data-sourcechannel"):
            #der Text vom header wird in die Liste hinzugefügt
            list.append(article.find("header").text.encode('utf-8').strip())
    # erzeuge ein leeres Wörerbuch
    dict= {}
    # ['...','...','....']
    for row in list:
        #jedes Element in der Liste wird gesplittet
        b= row.split()
        # Schleifer durch jedes Wort von dem String an der Stelle b der Liste
        for wort in b :
            if wort not in dict:
                #der Wert von dem Schlüssel wort wird zu 1 eingesetzt wenn er nicht im dict ist
                dict.update({wort:1})
            else:
                #sonst wird er um 1 erhört
                dict[wort] +=1

    #die Werte der Schlüssels im Wörterbuch wird absteigend sortiert
    sort_dict=sorted(dict.items(),key=lambda value:value[1], reverse=True)
    # die ersten drei Wörter mit dem höchsten Wert werden genommen und ausgedruckt
    print sort_dict[0] ,"\n", sort_dict[1], "\n",sort_dict[2]
# main program

if __name__ == '__main__':
    main()