web-dev-qa-db-fra.com

Utilisation de Python Requêtes: sessions, cookies et POST

J'essaie de gratter certaines données de vente en utilisant StubHub API . Un exemple de ces données vu ici:

https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata

Vous remarquerez que si vous essayez de visiter cette URL sans vous connecter à stubhub.com, cela ne fonctionnera pas. Vous devrez d'abord vous connecter .

Une fois que je me suis connecté via mon navigateur Web, j'ouvre l'URL que je souhaite gratter dans un nouvel onglet, puis j'utilise la commande suivante pour récupérer les données récupérées:

r = requests.get('https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata')

Cependant, une fois la session du navigateur expirée après dix minutes, j'obtiens cette erreur:

<FormErrors>
<FormField>User Auth Check</FormField>
<ErrorMessage>
Either is not active or the session might have expired. Please login again.
</ErrorMessage>

Je pense que je dois implémenter l'ID de session via un cookie pour maintenir mon authentification en vie.

La documentation de la bibliothèque Requests est assez terrible pour quelqu'un qui n'a jamais fait ce genre de chose auparavant, donc j'espérais que vous pourriez aider.

L'exemple fourni par Requests est:

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print r.text
# '{"cookies": {"sessioncookie": "123456789"}}'

Honnêtement, je ne peux pas en faire la tête ni la queue. Comment puis-je conserver les cookies entre les demandes POST?

31
user2238685

Je ne sais pas comment fonctionne l'api de stubhub, mais en général, cela devrait ressembler à ceci:

s = requests.Session()
data = {"login":"my_login", "password":"my_password"}
url = "http://example.net/login"
r = s.post(url, data=data)

Maintenant, votre session contient des cookies fournis par le formulaire de connexion. Pour accéder aux cookies de cette session, utilisez simplement

s.cookies

Toute autre action comme une autre demande aura ce cookie

54
Michał