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.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Was du da im Browser auf die von pixewakb gezeigte Weise sehen kannst, ist nicht der eigentliche Quelltext, sondern der DOM-Baum, den der Browser erzeugt, wenn die Seite fertig geladen ist; das schließt zum Beispiel auch das Ausführen von JavaScript, das zusätzliche Modifikationen durchführen kann, ein. Den eigentlichen Quelltext erhälst du im Firefox z.B. mit ctrl+U. Die Seite -- die du auch mit einem gewöhnlichen get-Request erhälst -- enthält nicht mal deinen Beispiel-String.

Im Übrigen finde ich es fragwürdig, was du da auf deiner Seite anbietest.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Doch, siehe hier:

Code: Alles auswählen

<pre id="code" class="brush: text; plain-text">testfile</pre>
Warum findest du es fragwürdig? :D
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Du solltest das Modul requests installieren und nutzen, urllib.request nutzt man da eigentlich nicht mehr. Dropbox dürfte viel JavaScript nutzen, d. h. der Inhalt, den Du im Browser siehst, dürfte dort erst nach einem Nachladen erkennen. Wenn Du so etwas parsen willst, dann geht das mit requests nicht mehr, sondern du müsstest auf Selenium wechseln, was aber sehr langsam ist, weil das Modul einen Browser mitbringt und über den Browser (!) die Abfragen durchführt. Das ist sehr, sehr langsam.

Packt die Information auf eine statische Website im Netz und parse es dann von da. Es gibt sowohl kostenlose Anbieter für Python-Apps, aber auch Sachen, wo du eine einfache HTML-Seite ablegen kannst. Mehr braucht es eigentlich nicht.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

xXSkyWalkerXx1 hat geschrieben: Sonntag 30. September 2018, 18:36 Doch, siehe hier:

Code: Alles auswählen

<pre id="code" class="brush: text; plain-text">testfile</pre>
Nein. Siehe hier:

Code: Alles auswählen

curl -s -A "Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0" "https://www.dropbox.com/s/kt3d2jn4sy2llew/test.txt?dl=0" | grep -i "testfile"
Warum findest du es fragwürdig? :D
Wenn ich das richtig verstanden habe, versuchst du Cheats zu verkaufen. Das ist mindestens fragwürdig.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

pixewakb hat geschrieben: Sonntag 30. September 2018, 18:41 Du solltest das Modul requests installieren und nutzen, urllib.request nutzt man da eigentlich nicht mehr. Dropbox dürfte viel JavaScript nutzen, d. h. der Inhalt, den Du im Browser siehst, dürfte dort erst nach einem Nachladen erkennen. Wenn Du so etwas parsen willst, dann geht das mit requests nicht mehr, sondern du müsstest auf Selenium wechseln, was aber sehr langsam ist, weil das Modul einen Browser mitbringt und über den Browser (!) die Abfragen durchführt. Das ist sehr, sehr langsam.

Packt die Information auf eine statische Website im Netz und parse es dann von da. Es gibt sowohl kostenlose Anbieter für Python-Apps, aber auch Sachen, wo du eine einfache HTML-Seite ablegen kannst. Mehr braucht es eigentlich nicht.
Wollte den Code ja eigentlich auf meiner skymodz.yooco.de Seite hochladen, aber da müsste ich den Thread mit einen Passwort sperren - somit müsste ich auch erstmal recherchieren wie Python das Passwort mitnimmt.

Wenn ich das richtig verstanden habe, versuchst du Cheats zu verkaufen. Das ist mindestens fragwürdig.
Warum ist das "mindestens" fragwürdig?
Außer versuche ich es nicht - sondern tue es erfolgreich seit ~2 Jahren.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

> Wollte den Code ja eigentlich auf meiner skymodz.yooco.de Seite hochladen, aber da müsste ich den
> Thread mit einen Passwort sperren - somit müsste ich auch erstmal recherchieren wie Python das Passwort mitnimmt.

Warum nimmst du nicht irgendwo ein kostenloses Webhosting-Angebot und packst dort eine leere HTML-Seite online, die nur eine Zahl (= die Versionsnummer) enthält, sonst nichts. Ich denke nicht, dass Außenstehende mit 1.23.2 etwas anfangen können, aber die Seite könntest du dann für das Programm immer parsen.

Nur mal so als Hinweis: Wenn Dein Nutzer einen Proxy nutzt, kannst du ohnehin nicht auf die Versionsnummer zugreifen; solche Fälle würde ich mitdenken.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Ja, habe ja schon geschaut...habe allerdings heute nicht mehr viel Zeit um intensiv danach zu suchen.
Denn auf Anhieb habe ich nichts gefunden.

Wieso nicht?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

xXSkyWalkerXx1 hat geschrieben: Sonntag 30. September 2018, 18:54 Außer versuche ich es nicht - sondern tue es erfolgreich seit ~2 Jahren.
Und, wieviel bringt das so ... ?
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Sehr sehr viel... :D
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

pixewakb hat geschrieben: Sonntag 30. September 2018, 20:34 > Wollte den Code ja eigentlich auf meiner skymodz.yooco.de Seite hochladen, aber da müsste ich den
> Thread mit einen Passwort sperren - somit müsste ich auch erstmal recherchieren wie Python das Passwort mitnimmt.

Warum nimmst du nicht irgendwo ein kostenloses Webhosting-Angebot und packst dort eine leere HTML-Seite online, die nur eine Zahl (= die Versionsnummer) enthält, sonst nichts. Ich denke nicht, dass Außenstehende mit 1.23.2 etwas anfangen können, aber die Seite könntest du dann für das Programm immer parsen.

Nur mal so als Hinweis: Wenn Dein Nutzer einen Proxy nutzt, kannst du ohnehin nicht auf die Versionsnummer zugreifen; solche Fälle würde ich mitdenken.
Und Dropbox geht aufgrund der Java Skripts nicht oder wie?
Ich meine, mit "soap.find_all()"/"soap.find()" müsste es doch den Pfad des Textes finden können?
Oder geht nicht irgendwie was mit "xpath" - welches Modul müsste man dafür verwenden?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Das hat doch pixewakb schon geschrieben! Und wenn Du so viel damit verdienst, kannst Du Dir trotzdem keinen richtigen Server leisten und mußt hier kostenlose Programmierung abgreifen?

Was ich halt nicht verstehe, ist, warum Du nicht bei Deinem yocoo.de bleibst, sondern jetzt das nächste Fass mit dropbox aufmachst???
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Habe ja nicht gesagt, dass ich es nicht verwenden mag - aber DropBox ist leichter (DACHTE ICH).
Und bei meiner skymodz.yooco.de Seite muss ich noch ein Passwort mitliefern.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Kannst Du das mit dem Passwort erklären?
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
pixewakb hat geschrieben: Sonntag 30. September 2018, 20:34 Warum nimmst du nicht irgendwo ein kostenloses Webhosting-Angebot und packst dort eine leere HTML-Seite online, die nur eine Zahl (= die Versionsnummer) enthält, sonst nichts. Ich denke nicht, dass Außenstehende mit 1.23.2 etwas anfangen können, aber die Seite könntest du dann für das Programm immer parsen.
Hatte ich ganz am Anfang schon mal vorgeschlagen... sowas geht problemlos über AWS Lambda.

Gruß, noisefloor
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Sirius3 hat geschrieben: Montag 1. Oktober 2018, 09:26 Kannst Du das mit dem Passwort erklären?
Wenn man auf eine Seite möchte muss man vorher...
1. Registriert sein - ok, dafür könnte ich ein account erstellen, mit denen das Programm auf die Seite kann.
2. Und dann ein Zugangspasswort eingeben, um Zugang zu dieser einen bestimmten Seite zu bekommen.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Um eine Versionsnummer abzufragen? Muß man ein Passwort eingeben? Und bei DropBox nicht?
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@xXSkyWalkerXx1: du denkst viel zu kompliziert, was aber IMHO daran liegt, dass dir da (noch) alles mögliche Wissen fehlt, was Webprogrammierung angeht. Beschäftige dich doch mal ein wenig damit, wie so Request-Response Abläufe funktionieren und wie HTTP-basierte APIs (REST-APIs) aussehen. Hilft bei der Lösugsfindung.

Zweite Einschränkung: dein Hoster, der anscheinend alles mögliche limitiert bzw unterbindet. Wenn du so viel Kohle mit dem Verkauf von Cheats verdienst, dann kannst du dir doch sicherlich einen vollwertigen Server bzw. eine Server-Instanz irgendwo mieten / finanzieren. Wurde oben schon mal vorgeschlagen. Würde dich und dein "Business" deutlich flexibler machen.

Gruß, noisefloor
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Sirius3 hat geschrieben: Montag 1. Oktober 2018, 12:07 Um eine Versionsnummer abzufragen? Muß man ein Passwort eingeben? Und bei DropBox nicht?
Es wäre nicht nur die Versionsnummer - es wäre der ganze Skript, aber ja.
Und nein, bei Dropbox nicht...
von noisefloor » Montag 1. Oktober 2018, 12:49
Hallo,

@xXSkyWalkerXx1: du denkst viel zu kompliziert, was aber IMHO daran liegt, dass dir da (noch) alles mögliche Wissen fehlt, was Webprogrammierung angeht. Beschäftige dich doch mal ein wenig damit, wie so Request-Response Abläufe funktionieren und wie HTTP-basierte APIs (REST-APIs) aussehen. Hilft bei der Lösugsfindung.

Zweite Einschränkung: dein Hoster, der anscheinend alles mögliche limitiert bzw unterbindet. Wenn du so viel Kohle mit dem Verkauf von Cheats verdienst, dann kannst du dir doch sicherlich einen vollwertigen Server bzw. eine Server-Instanz irgendwo mieten / finanzieren. Wurde oben schon mal vorgeschlagen. Würde dich und dein "Business" deutlich flexibler machen.

Gruß, noisefloor
Danke für die Antwort...zu wissen worin ich mich genauer Informieren sollte ist auch sehr hilfreich! :)

Grüße, xXSkyWalkerXx1
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

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...
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Was für Seiten würdest mit empfehlen um Webprogr. zu lernen?
Wie ist diese: http://docs.python-requests.org/de/late ... start.html ?
Antworten