HTMLParser - Verständnisshilfe

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.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

xXSkyWalkerXx1 hat geschrieben: Montag 1. Oktober 2018, 16:38 Ich möchte die Versionsnummer auslesen lassen UND ,wenn neue Version vorhanden, den dazugehörigen Skript als bloßen String speichern lassen.
Jetzt klar? ...dabei schreibe ich doch eigentlich immer deutlich. :D
"den dazugehörigen Skript als bloßen String speichern" ist unverständlich.

Wenn das (s. Zitat) dein Problem ist, dann löst man das mit gefühlt 8 Zeilen Code. Dafür, dass wir mittlerweile auf der 3. Unterseite diskutieren, scheint Dein Problem recht überschaubar-einfach-klein.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Das sind so momentan die Funktionen, die ich zu "requests" notiert habe:

Funktionen für Webscraping: „import requests“
(.requests)

.get() Seite laden
.text Inhalt als Text ausgeben
.post(url,<params>) sendet Daten, params = dictionary
.status_code() Statuscode erhalten
.codes.ok Verbindung erfolgreich?
.(… , allow_redirects=True/False) Weiterleitung aktivieren?
.(… , timeout= <in sek> ) TimeOut nach...
.Session() Parameter bleiben bestehen
.(… , stream= True/False) Wenn „True“, dann wird Inhalt
erst gedownloadet, wenn
„.content“ aufgerufen wird
.(… , auth = {…}) Für Authentifizierungen

Gibts noch welche, die ich eurer Meinung nach hinzufügen sollte?

Schaue morgen weiter nach "BS4" Funktionen...
Aber vllt kann mir bis morgen jemand erklären, warum in

Code: Alles auswählen

print(span_item.text.split(" ")[-1])
bei .split "(" ")[-1]" steht? :)

Grüße,
xXSkyWalkerXx1
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

ich weiß nicht, wie Du am besten etwas lernst (ich, z.B. indem ich Dinge systematisch ausprobiere), aber ich glaube, die Dokumentation ohne Verstand falsch abzuschreiben, bringt niemanden weiter.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Ich hatte anfangs zu jeder Funktions/etc. Stichpunkte gemacht, um so immer mal nachschauen zu können - aber warum falsch?
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

pixewakb hat geschrieben: Montag 1. Oktober 2018, 13:49 PS an "interessante" Seiten auf deiner Website komme ich ohne Registrierung ran.

PPS Das ginge so prinzipiell auch:

Code: Alles auswählen

>>> from bs4 import BeautifulSoup
>>> import requests
>>> url = "https://skymodz.yooco.de/fortnite_gamepack"
>>> web = requests.get(url)
>>> soup = BeautifulSoup(web.text, "html5lib")
>>> span_items = soup.find_all("span")
>>> for span_item in span_items:
	if "FORTNITE GAMEPACK V" in span_item.text:
		print(span_item.text.split(" ")[-1])
		break

	
V1.5
Wenn Du ein gescheites ID- oder Class-Element für die Überschrift definieren würdest, dann wäre die Abfrage sehr viel einfacher und vor allem gegen Änderungen geschützter. Die aktuelle Lösung funktioniert nur solange Du an der Website nichts fundamental änderst...
Oh mann! Ich bin soo dumm... :D Na klar, hab mir mal dein Bsp. genauer angeguckt und geguckt warum "[-1]" steht und nicht "[3]"...oar, jetzt hab ich's verstanden! :D
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Ich habe nun folgendes kleines Problem:
Der Login funktioniert, kann ich aus dem ausgegebenen Content entnehmen, allerdings weiß ich nicht, wie ich meinem Programm das wissen lassen kann?
Also das Programm soll erkennen, ob der Login erfolgreich war oder nicht.

Grüße,
xXSkyWalkerXx1
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich verstehe Dein Problem nicht. Wenn es im ausgegebenen Content steht, kann das doch auch Dein Programm rauslesen.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Jaa, dumme Frage eigentlich! :D Hab's lösen können... ^^
Im Content muss ja was mit "ausloggen" stehen, wenn man angemeldet ist und wenn das Programm diesen str im content ( str(content) ) gefunden hat, dann müsste man ja eingeloggt sein.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Wobei diese Methode wiederum sehr fragil ist. Wie immer: HTML parsen, den genauen XPath herausfinden, wo der Logout-Link, oder das eingeloggt-Label steht und das auslesen.
Antworten