ubuntuusers.de

Python/Requests

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Python/Requests.

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

karzer schrieb:

Ach so, Getestet/general bitte entfernen.

Wieso? Der Artikel ist doch für alle Ubuntu-Versionen gültig!

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1509

Wohnort: Bad Oeynhausen

noisefloor schrieb:

Hallo,

Getestet general wage ich zu bezweifeln

Korrekt. Die aktuelle Version von requests, die im Artikel ja via pip installiert wird, braucht Python >= 3.7. Bionic bringt OOTB nur Python 3.6 mit.

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

karzer schrieb:

noisefloor schrieb:

Hallo,

Getestet general wage ich zu bezweifeln

Korrekt. Die aktuelle Version von requests, die im Artikel ja via pip installiert wird, braucht Python >= 3.7. Bionic bringt OOTB nur Python 3.6 mit.

OK. Habe ich korrigiert.

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

noisefloor schrieb:

Ansonsten ist der Artikel extrem dünn, das kratzt noch nicht mal ansatzweise an der Oberfläche. Wenn der Artikel durchgewunken werden sollte, dann sollte IMHO zumindest noch ein Beispiel für den Umgang mit JSON und vllt. auch, wie man Auth-Daten sendet, mitgegeben werden.

OK, ich habe das Beispiel mit JSON hinzugefügt.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

ja, aber suboptimal.

Wenn du einen JSON-Response bekommst, dann hat Requests eine Methode, um an die Daten zu kommmen:

1
2
3
4
>>> r = requests.get('https://httpbin.org/json')
>>> r.json()
{'slideshow': {'author': 'Yours Truly', 'date': 'date of publication', 'slides': [{'title': 'Wake up to WonderWidgets!', 'type': 'all'}, {'items': ['Why <em>WonderWidgets</em> are great', 'Who <em>buys</em> WonderWidgets'], 'title': 'Overview', 'type': 'all'}], 'title': 'Sample Slide Show'}}
>>>

Mithilfe im Wiki ist ja gut, aber man sollte sich echt doch vor oder während des Schreibens mit dem Programm beschäftigen, das man nutzt. Im Falle von Requests ist das auch noch echt einfach, weil es sehr gut dokumentiert ist. Die Doku solltest du vielleicht auch mal intensiv konsultieren.

Ich kenne zwar requests, nutze es aber selber nicht. Aber die Basics hat man ja echt schnell aus der Doku rausgeholt.

Und bzgl. der Beispiele: es wäre echt besser, wenn die Beispiele auch nachvollziehbar wären, sprich wenn du eine URL benutzen würdest, dies es a) gibt, b) jeder drauf zugreifen kann und c) sinnvolle Daten zurück liefert. Wie z.B. https://httpbin.org/ - die Seite wird übrigens vom Hauptentwickler des requests-Moduls betrieben.

Gruß, noisefloor

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

noisefloor schrieb:

Hallo,

ja, aber suboptimal.

Wenn du einen JSON-Response bekommst, dann hat Requests eine Methode, um an die Daten zu kommmen:

1
2
3
4
>>> r = requests.get('https://httpbin.org/json')
>>> r.json()
{'slideshow': {'author': 'Yours Truly', 'date': 'date of publication', 'slides': [{'title': 'Wake up to WonderWidgets!', 'type': 'all'}, {'items': ['Why <em>WonderWidgets</em> are great', 'Who <em>buys</em> WonderWidgets'], 'title': 'Overview', 'type': 'all'}], 'title': 'Sample Slide Show'}}
>>>

Mithilfe im Wiki ist ja gut, aber man sollte sich echt doch vor oder während des Schreibens mit dem Programm beschäftigen, das man nutzt. Im Falle von Requests ist das auch noch echt einfach, weil es sehr gut dokumentiert ist. Die Doku solltest du vielleicht auch mal intensiv konsultieren.

Ich kenne zwar requests, nutze es aber selber nicht. Aber die Basics hat man ja echt schnell aus der Doku rausgeholt.

Und bzgl. der Beispiele: es wäre echt besser, wenn die Beispiele auch nachvollziehbar wären, sprich wenn du eine URL benutzen würdest, dies es a) gibt, b) jeder drauf zugreifen kann und c) sinnvolle Daten zurück liefert. Wie z.B. https://httpbin.org/ - die Seite wird übrigens vom Hauptentwickler des requests-Moduls betrieben.

Gruß, noisefloor

OK, ich habe beides korrigiert.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

wer auch immer das mit "Hauptvariablen" und "Untervariablen" in den Artikel geschrieben hat: sowas gibt es in Python nicht. Der Rückgabewert von requests.METHODE ist class requests.models.Response und die Instanz bindet man an eine Variable. Das der Statuscode standardmäßig zurückgegeben wird liegt daran, wie die Klasse angelegt ist bzw. deren str Methode. Könnte man überschreiben / ändern.

Gruß, noisefloor

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

noisefloor schrieb:

Hallo,

wer auch immer das mit "Hauptvariablen" und "Untervariablen" in den Artikel geschrieben hat: sowas gibt es in Python nicht. Der Rückgabewert von requests.METHODE ist class requests.models.Response und die Instanz bindet man an eine Variable. Das der Statuscode standardmäßig zurückgegeben wird liegt daran, wie die Klasse angelegt ist bzw. deren str Methode. Könnte man überschreiben / ändern.

Gruß, noisefloor

OK. Habe ich geändert

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1509

Wohnort: Bad Oeynhausen

tassilomoedl schrieb:

noisefloor schrieb:

Hallo,

wer auch immer das mit "Hauptvariablen" und "Untervariablen" in den Artikel geschrieben hat: sowas gibt es in Python nicht. Der Rückgabewert von requests.METHODE ist class requests.models.Response und die Instanz bindet man an eine Variable. Das der Statuscode standardmäßig zurückgegeben wird liegt daran, wie die Klasse angelegt ist bzw. deren str Methode. Könnte man überschreiben / ändern.

Gruß, noisefloor

OK. Habe ich geändert

Ein paar Fachbegriffe zu kennen, wäre aber auch gut. Das, was man erhält, wenn man die GET-Methode aufruft, ist ein Objekt oder eine Instanz, text ist eine Instanzvariable.

Habe ich so eingefügt.

Außerdem ist die Ausgabe von text nicht dekodiert. Wie man das macht, bitte noch hinzufügen, sonst hat die Response unter normalen Umständen keinen Wert. Siehe https://requests.readthedocs.io/en/latest/user/quickstart/#response-content

Die Funktion kann nach dem Importieren mithilfe von requests.<HTTP BEFEHL>...

Sind GET, PUT, POST usw. wirklich Befehle zu nennen? Da bin ich mir nicht sicher.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

text ist eine Instanzvariable.

Ganz korrekt ist es ein Attribute, weil das Response-Objekt eine Klasse ist.

Sind GET, PUT, POST usw. wirklich Befehle zu nennen?

Nein, ist auch falsch. Es sind HTTP Methoden, im deutschen kann man auch HTTP Verben sagen.

@tassilomoedl: wie gesagt, Mitarbeit im Wiki ist schön - aber du musst dich bitte echt besser mit dem Thema beschäftigen. a) ist ein Wikiartikel kein Rennen, d.h. du hast Zeit. Es zwingt dich niemand, Sachen in Rekordzeit zu korrigieren, dafür aber falsch oder schlechter als vorher. b) kann das Schreiben eines Wikiartikels im Vorfeld (Einlesen / Recherche) nun mal deutlich mehr Zeit einnehmen als das Schreiben selber. Du kannst noch nicht gut Python und lernst es gerade. Gut. Aber dann sollst du mit einem Wikiartikel zu einem Python-Modul vielleicht so lange warten, bis die Grundlagen sitzen. Die Begriffe "Hauptvariable" und "Untervariable" zeigen nun mal, dass du Python Datenstrukturen sowie ein Grundverstädnis von Klassen, Instanzen, Attributen und Methoden noch nicht drauf hast. Nicht schlimm, kann man alles noch lernen. Nur halt ungünstig, wenn man jetzt schon drüber schreiben will.

Vorschlag: setz' das Fertigstellungsdatum auf Ende des Monats oder Oktober oder so und schreib' einfach weiter, wenn du dich mehr mit Python und dem requests-Modul beschäftigt hast.

Gruß, noisefloor

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

noisefloor schrieb:

@tassilomoedl: wie gesagt, Mitarbeit im Wiki ist schön - aber du musst dich bitte echt besser mit dem Thema beschäftigen. a) ist ein Wikiartikel kein Rennen, d.h. du hast Zeit. Es zwingt dich niemand, Sachen in Rekordzeit zu korrigieren, dafür aber falsch oder schlechter als vorher. b) kann das Schreiben eines Wikiartikels im Vorfeld (Einlesen / Recherche) nun mal deutlich mehr Zeit einnehmen als das Schreiben selber. Du kannst noch nicht gut Python und lernst es gerade. Gut. Aber dann sollst du mit einem Wikiartikel zu einem Python-Modul vielleicht so lange warten, bis die Grundlagen sitzen. Die Begriffe "Hauptvariable" und "Untervariable" zeigen nun mal, dass du Python Datenstrukturen sowie ein Grundverstädnis von Klassen, Instanzen, Attributen und Methoden noch nicht drauf hast. Nicht schlimm, kann man alles noch lernen. Nur halt ungünstig, wenn man jetzt schon drüber schreiben will.

Vorschlag: setz' das Fertigstellungsdatum auf Ende des Monats oder Oktober oder so und schreib' einfach weiter, wenn du dich mehr mit Python und dem requests-Modul beschäftigt hast.

Gruß, noisefloor

OK. Ich habe das Fertigstellungsdatum auf 12.10.2022 gesetzt.

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1509

Wohnort: Bad Oeynhausen

Soll hier noch etwas passieren? Andernfalls markiere ich sie als Verlassen.

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1509

Wohnort: Bad Oeynhausen

Verlassen.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

habe den Artikel zu Ende geschrieben, was aber quasi ein kompletter Rewrite war.

Gruß, noisefloor

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1509

Wohnort: Bad Oeynhausen

Hallo,

sieht ganz gut aus. Bitte aber beim nächsten Mal erst die Baustelle anmelden, damit sie regulär verschoben werden kann.