News-scrapper "Golem"

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
1of7470000000
User
Beiträge: 10
Registriert: Donnerstag 8. Februar 2018, 22:04

Freitag 9. Februar 2018, 00:26

Code: Alles auswählen

#Python 2.6
import urllib2
from bs4 import BeautifulSoup
site_golem = urllib2.urlopen("https://www.golem.de/ticker/").read()
lecker_suppe = BeautifulSoup(site_golem, "html.parser")
result = lecker_suppe.find_all("h3", class_="text1")
print "Golem-News-------------------------------------------------------------------------------------------------------"
liste1 = []
def dont_repaeat_this_shit(x,y):
    """  Function is my solution for the correct format line by line
         first arg =list // second arg = result of soup
    """
    x.append(y)
    for i in x:
        for i in i:
            print i
dont_repaeat_this_shit(liste1,result)
Sirius3
User
Beiträge: 8421
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 9. Februar 2018, 08:49

dont_repaeat_this_shit ist kein guter Name, ebenso liste1. Das große Problem ist, dass dont_repaeat_this_shit genau das tut; alles wiederholen, was man davor mit dieser Funktion ausgegeben hat, weil sie als Nebeneffekt die übergebene Liste verändert. Soetwas ist normalerweise nicht gewollt, weil für den Programmierer überraschend. x und y sind als Argumentnamen schlecht, warum heißen die nicht liste und result_of_soup? Für was ist die Liste überhaupt gut? `for i in i` ist nicht gut, weil `i` für ein Soup-Element ein schlechter Name ist und das `i` durch ein anderes `i` überschrieben wird.
1of7470000000
User
Beiträge: 10
Registriert: Donnerstag 8. Februar 2018, 22:04

Freitag 9. Februar 2018, 21:24

Hallo,

auch hier danke für das Feedback. Die Funktion hatte ich benutzt, weil ich auch noch andere Seiten Scrappe und das nicht jedes mal dazu schreiben wollte. In dem Kurs hatte ich gelernt, wann immer sich was wiederholt, versuch es in eine Funktion zu schreiben.
Bei meinen ersten Versuchen Seiten zu scrappen, kamen die ganzen Links immer nebeneinander.
Das war für mich irgendwie ziemlich blöd zu lesen. Dann habe ich dran herumgewerkelt, weil ich das nicht so wollte.
Und es weit über meinen Anfangskurs hinaus ging, da gab es also keine Tipps mehr.
Ich habe ja dann versucht in dem Kommentar so gut auszudrücken, wie es mir möglich war.

Das gleiche gilt für die Benutzung der Liste. Mein Gedanke war folgender: Wenn ich Python sage, pack was du findest in eine Liste und gib mit deren Items untereinander aus, dann sollte ich doch bekommen was ich will. Ich sage gar nicht das dies der beste Weg ist (lol), aber der einzige den ich gefunden habe.

Das war meine beste (gefundene) Lösung dafür, das das dann untereinander kommt.

Ich habe heute auch gemerkt, dass ich meine Funktioen und Argumente ganz dingend professioneller bezeichnen sollte. Das werde ich in Zukunft tun. Die Bezeichner so präzise benennen wie ich kann und solche Quatsch- Namen total weglassen.
Antworten