html untersuchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

wie funktioniert es bei dir? mit meinem lande ich immer bei der anmeldeseite!

Code: Alles auswählen

def online_benutzer_parser():
    with requests.Session() as session:
        benutzerdaten = {"benutzername" : "Fire Spike",
                         "passwort" : "geht-euch-nichts-an"}
        session.post("https://www.python-forum.de/ucp.php?mode=login", data=benutzerdaten)
        params = session.params
        cookies = session.cookies.get_dict()
        html = session.get("https://www.python-forum.de/viewonline.php", cookies=cookies, params=params).text
        print(html)
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Fire Spike: Ich habe das Formular auf der Indexseite verwendet. Die `params` habe ich nicht gebraucht und die Cookies brauchst Du garantiert nicht, dafür ist ja das `Session`-Objekt da.

Und die Schlüssel heissen natürlich nicht "benutzername" und "passwort".
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

geändert aber geht immer noch nicht.

Code: Alles auswählen

def online_benutzer_parser():
    with requests.Session() as session:
        benutzerdaten = {"username" : "Fire Spike",
                         "password" : "ungültig"}
        session.post("https://www.python-forum.de/index.php", data=benutzerdaten)
        html = session.get("https://www.python-forum.de/viewonline.php").text
        print(html)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Du benutzt die falsche URL.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

was ist den die richtige?
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

die geht auf jeden fall nicht: ucp.php?mode=login
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie kommst Du drauf? Außerdem habe ich Dir schon vor einer Woche geschrieben, dass da noch mehr Formular-Daten sind.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

hast recht, der autologin hatte ich übersehen. was erwartet der den für werte? im code finde ich nichts. :(
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

ich habe mal 1, true, on und yes übergeben aber es ging nichts :roll: . Was erwartet es denn? :?: :| :oops:
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Mit Raten kommst Du hier nicht weiter. Du mußt nachschauen, was wirklich übergeben wird.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

das weiss ich, aber im quelltext finde ich nichts. kann gut sein weil ich nicht wirklich die erfahrung von html habe aber ich gab mir mühe. :oops:
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Developerseite des Browsers Deines Vertrauens öffnen, Formular absenden und nachschauen, welcher Request mit welchen Parametern abgesetzt wurde.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Mein browser ist chromium auf dem rpi4 und dort finde ich nichts wo ich request mit den parametern anschauen könnte.
Ps: Ist bei dir die schrift vom Forum auch aktualisiert worden?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Moderne Browser haben einen Debugger eingebaut. Einfach Rechtsklick und "dieses Element inspizieren" oder so etwas aehnliches aufrufen. Und da gibt es dann auch einen "Network"-Tab, in dem du dir anschauen kannst, was fuer Requests wann mit welchen Daten passieren.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Also, das hier sind die formulardaten

Code: Alles auswählen

username: Fire Spike
password: bdfbb
autologin: on
redirect: ./ucp.php?mode=login
sid: f95fcf4b747f58cd111f360e715e028b
redirect: index.php
login: Anmelden
welche brauche ich davon?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nimm doch einfach alle. Warum sparen?
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

es geht jetzt, aber wie kann ich jeden namen ausgeben?
Im moment kommt nur der eigene name.

Code: Alles auswählen

soup.find("div", "forumbg forumbg-table").table.tbody.tr.td.a.next
Ich hatte schon versucht über die tr zu iterieren aber es kommt immer ein KeyError.
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Ich kann jetzt die normalen user anzeigen, aber bei den bots kommt ein

Code: Alles auswählen

AttributeError: 'NavigableString' object has no attribute 'td'

Code: Alles auswählen

        session.post("https://www.python-forum.de/ucp.php?mode=login", data=benutzerdaten)
        html = session.get("https://www.python-forum.de/viewonline.php").text
        soup = BeautifulSoup(html, "html.parser")
        i = 1
        for tag in soup.find("div", "forumbg forumbg-table").table.tbody.contents:
            try:
                user = tag.td.a.next
            except AttributeError:
                user = tag.td.span.next
            i +=1
            print(user)
was ist hier falsch?
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Fire Spike: Na offensichtlich das `tag` in dem Fall kein Element mehr ist sondern ein `NavigableString` der kein `td`-Attribut hat.

Ich würde sagen das `contents` ist falsch, weil Du an der Stelle aufhörst Dich an der Struktur zu orientieren. Wenn Du die Tabellenzeilen verarbeiten willst, sollte nach dem `tbody` ein `find_all("tr")` kommen, dann bist Du schon mal sicher das `tag` nicht irgenwas sein kann, sondern nur <tr>-Elemente aus der Tabelle.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Danke für alle die mir geholfen haben.
Antworten