Ich verwende das Anforderungsmodul (Version 0.10.0 mit Python 2.5). Ich habe herausgefunden, wie Daten an ein Anmeldeformular auf einer Website gesendet und der Sitzungsschlüssel abgerufen werden können, sehe jedoch keine offensichtliche Möglichkeit, diesen Sitzungsschlüssel in nachfolgenden Anforderungen zu verwenden. Kann jemand die Auslassungspunkte im folgenden Code ausfüllen oder einen anderen Ansatz vorschlagen?
>>> import requests
>>> login_data = {'formPosted':'1', 'login_email':'[email protected]', 'password':'pw'}
>>> r = requests.post('https://localhost/login.py', login_data)
>>>
>>> r.text
u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>'
>>> r.cookies
{'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'}
>>>
>>> r2 = requests.get('https://localhost/profile_data.json', ...)
python
python-requests
ChrisGuest
quelle
quelle
localhost
können Probleme mit der Anmeldung und anderen vom Webserver zurückgegebenen Cookies auftreten, wenn sie einen falschen Wert für die Domäneneigenschaft enthalten. Derlocalhost
Webserver sollte Cookies mit der Domain-Eigenschaft "Zurückgeben" zurückgebenlocalhost.local
, da sonst das Cookie nicht auf die Sitzung angewendet wird. In diesem Fall verwenden Sie127.0.0.1
anstelle vonlocalhost
Die anderen Antworten helfen zu verstehen, wie eine solche Sitzung aufrechterhalten wird. Außerdem möchte ich eine Klasse bereitstellen, die die Sitzung über verschiedene Skriptläufe (mit einer Cache-Datei) verwaltet. Dies bedeutet, dass eine ordnungsgemäße "Anmeldung" nur bei Bedarf durchgeführt wird (Zeitüberschreitung oder keine Sitzung im Cache vorhanden). Außerdem werden Proxy-Einstellungen für nachfolgende Aufrufe von 'get' oder 'post' unterstützt.
Es wird mit Python3 getestet.
Verwenden Sie es als Grundlage für Ihren eigenen Code. Die folgenden Snippets werden mit GPL v3 veröffentlicht
Ein Code-Snippet zur Verwendung der obigen Klasse kann folgendermaßen aussehen:
quelle
requests
Modul. Wie würden Sie es als Teil des Moduls implementieren? oder wie meinst du @ user1602?Schauen Sie sich meine Antwort in dieser ähnlichen Frage an:
python: urllib2 wie man ein Cookie mit einer URLopen-Anfrage sendet
BEARBEITEN:
Ich sehe, ich habe ein paar Abstimmungen für meine Antwort bekommen, aber keine erklärenden Kommentare. Ich vermute, es liegt daran, dass ich mich
urllib
stattdessen auf die Bibliotheken bezieherequests
. Ich mache das, weil das OP um Hilfe bittetrequests
oder jemanden bittet , einen anderen Ansatz vorzuschlagen.quelle
requests
eine einfache und umfassende Lösung für ein Problem bietet, für dessen Implementierung ansonsten 3 Bibliotheken erforderlich wären.Die Dokumentation besagt, dass dies
get
optional istcookies
Argument verwendet wird, mit dem Sie die zu verwendenden Cookies angeben können:aus den Dokumenten:
http://docs.python-requests.org/en/latest/user/quickstart/#cookies
quelle
Beim Ausprobieren aller oben genannten Antworten stellte ich fest, dass die Verwendung von "RequestsCookieJar" anstelle des regulären CookieJar für nachfolgende Anfragen mein Problem behoben hat.
quelle
Snippet zum Abrufen von JSON-Daten, passwortgeschützt
quelle
Speichern Sie nur die erforderlichen Cookies und verwenden Sie sie erneut.
quelle
Dies funktioniert für Sie in Python.
quelle