Seite 2 von 2

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 20:11
von Assassin4711
Vorab: Vielen DANK

Puh das ist schon manchmal der Wahnsinn wie gut man sich mit irgendwas auskennen kann. Ich habe bis dato immer nur VBA programmiert und das auch immer nur so, dass ich mein Problem gelöst bekommen habe.

Python ist eben für mich nochmal ein Buch mit "Sieben Siegeln" ... Einfach weil die Art wie man den Code schreibt, bzw. schreiben muss nochmal komplett anders ist. Es macht ab und an anscheinend auch nochmal unterschied ob ich den Befehl einrücke oder nicht. Darauf zu achten Das war in VBA eher nur optisch von Nöten.

Und vieles von dir geschriebene, für das ich sehr dankbar bin, verstehe ich komplett null 8)

Das mit dem elif ist mir jetzt nach deiner Schilderung auch aufgefallen. Macht wahrlich wenig Sinn ...

Ich hätte jetzt u deinem Code viele viele Fragen, dass würde dir aber unnötig Zeit rauben.

Doch die ein oder andere muss ich stellen:

was bedeutet das

Code: Alles auswählen

if __name__ == "__main__":
    main()
Und eine weitere Frage wie bekomme ich Überschriften hin damit ich dann (nächste Frage) die Daten in eine csv Datei überführen kann?

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 20:25
von rogerb
@Assassin4711,

Code: Alles auswählen

if __name__ == "__main__":
    main()
Nennt man "import guard", oder Import Schutz.
Wie du siehst wird die main() Funktion nur aufgerufen, wenn die Bedingung erfüllt ist. Das ist immer dann der Fall, wenn das Script direkt ausgeführt wird. Dann ist __name__ nämlich gleich "__main__". Wenn dieses Modul von anderen Modulen importiert wird, ist die Bedingung nicht erfüllt, denn __name__ würde dann den Namen des Moduls und nicht mehr "__main__" enthalten.
Also einfach gesagt die main() Funktion kann nur laufen wenn man dieses Modul direkt ausführt.

Die andere Frage verstehe ich leider nicht. "wie bekomme ich Überschriften hin"?

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:01
von Assassin4711
Na wenn ich das Ergebnis in eine csv Datei packen will. Im dieser dann anschließend in Excel einzulesen dann benötige ich dich auch Überschriften. Und die würde ich eben schon gerne mit in der csv stehen haben.
Und wie erstelle ich Erbengemeinschaft eine csv?

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:01
von Assassin4711
Also Überschriften für die einzelnen Spalten.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:08
von __deets__
Die erste Zeile enthält die Überschriften.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:13
von Assassin4711
Aber nicht wenn ich die Daten über den print Befehl anzeigen lasse. Da bedingt jupyter direkt mit dem ersten Datensatz.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:23
von __deets__
Ändert nichts an Antwort. So kommen nunmal Überschriften in csv Dateien. Was du mit jupyter und Print machst, ist bis dato dein Geheimnis. Kann man also auch nichts zu sagen.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Montag 13. September 2021, 21:32
von Assassin4711
Hmm jetzt steh ich auf dem Schlauch. Also den Code schreibe ich im jupyter Notebook. Und da bekomme ich ja, wenn ich das Programm laufen lasse unten das Ergebnis angezeigt. Und bei diesem Ergebnis habe ich keine Überschriften.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Dienstag 14. September 2021, 07:56
von Assassin4711
ich habe die Überschrift jetzt mit folgender Zeile hinbekommen:

Code: Alles auswählen

    überschrift = ['Land' , 'Tunier' , 'Startzeit' , 'Spieler' , 'Heim_Quote' , 'Auswärts_Quote']
    print(";".join(überschrift))
Wenn ich das Ergebnis kopiere und in eine Textdatei ablege kann ich diese auch in Excel öffnen. Kann man die daten auch anstatt mit dem Printbefehl anzuzeigen auch direkt in eine csv auf dem Laufwerk abspeichern?

Re: Fehler bei Abfrage (Tuples)

Verfasst: Dienstag 14. September 2021, 09:25
von einfachTobi
Ja, kann man mit dem eingebauten csv Modul.

Re: Fehler bei Abfrage (Tuples)

Verfasst: Dienstag 14. September 2021, 11:12
von Assassin4711
einfachTobi hat geschrieben: Dienstag 14. September 2021, 09:25 Ja, kann man mit dem eingebauten csv Modul.
Dank dir für den Literatur Hinweis.

So ich habe jetzt mal versucht das neu gelernte auf eine weitere Tabelle anzuwenden:

Dazu habe ich den Code im oberen Bereich wie folgt geändert:

Code: Alles auswählen

from selenium import webdriver

CHROME_DRIVER = R"C:\webdrivers\Chromedriver.exe"


def iter_stripped_texts(elements, start_index=None, end_index=None):
    return (element.text.strip() for element in elements[slice(start_index, end_index)])


def main():
    driver = webdriver.Chrome(CHROME_DRIVER)
    driver.get("https://www.oddsportal.com/tennis/usa/cary-2-challenger-men/krueger-mitchell-kubler-jason-8MNxIA25/")
    
    country = tournament = None
    
    überschrift = ['Buchmacher' , 'Heim_Quote' , 'Away_Quote' , 'Payout']
    print(";".join(überschrift))
    
    for row in driver.find_elements_by_css_selector("#odds-data-table > div:nth-child(1) > table > tbody"):
Ziel ist es in der Tabelle die Buchmacher und deren Quoten aufzulisten.

Ich tappe aber bei dieser Zeile komplett im dunkeln was hier gemacht wird:

Code: Alles auswählen

def iter_stripped_texts(elements, start_index=None, end_index=None):
    return (element.text.strip() for element in elements[slice(start_index, end_index)])
Also habe ich einfach in den folgenden Zeilen Werte verändert um festzustellen wie sich das Ergebnis verändert.
Da ich der Tabelle jetzt kein Problem mit Zeilen habe die nicht die gewünschten Daten enthalten brauche ich auch den Zellinhalt nicht zu prüfen. Also war meine Idee die Daten für die Liste direkt in die Variablen einzuspielen.

Code: Alles auswählen

            cells = row.find_elements_by_tag_name("tr")
            bookie = iter_stripped_text(row.find_elements_by_tag_name("a"))
Aber leider funktioniert das so nicht.

Was habe ich falsch gemacht, bzw. wo habe ich falsch gedacht?

Re: Fehler bei Abfrage (Tuples)

Verfasst: Dienstag 14. September 2021, 19:10
von Assassin4711
ahh ich habs hinbekommen ... ich hatte den falschen Selector ausgewählt...

Danke euch Jungs ...