Function takes a url and returns a soup page object. Copied from the Greyhound scraper.
"""
r=requests.get(url)
data=r.text
spobj=BeautifulSoup(data,"lxml")
returnspobj
defgetHeaders(content):
"""
Function takes some content, parses the article headers and adds them to a list, parses the words in the article headers, converts them to lowercase, then finally adds them to our word list.
"""
forcincontent:
ifc.header!=None:
allheaders.append((c.header).string.strip())
forheaderinallheaders:
words=re.findall("[\w'-]+",header)
forwordinwords:
madelower=word.lower()
allwords.append(madelower)
#initialisiert Variablen
heiseurl="https://www.heise.de/thema/https?seite="#URL der Seiten
allheaders=[]#alle Überschriften
allwords=[]#alle Wörter in Überschriften
zippedwordcount=[]#Tupeln von Wörter und wie oft die in Überschriften verwendet werden
forpageinrange(0,4):
zuoeffnen=heiseurl+str(page)
# print("Opening "+zuoeffnen) #nur zum Testen, damit wissen wir, woher den Fehler kommt
sortedwords=sorted(allwords)#sortierte Liste von Wörter
#zählt wie oft ein Wort in Überschriften benutzt wird, zipped das Wort mit der Anzahl in einem Tupel, und speichert die in einer Liste
i=0
whilei<len(sortedwords):
j=i+1
word=sortedwords[i]
zaehler=1
whilej<len(sortedwords)andword==sortedwords[j]:
zaehler+=1
j+=1
zippedwordcount.append((zaehler,word))
i=j
#Quelle für die Sortierung: https://stackoverflow.com/questions/14466068/sort-a-list-of-tuples-by-second-value-reverse-true-and-then-by-key-reverse-fal