Aller au contenu
View in the app

A better way to browse. Learn more.

Omerta

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

LES BASES DES REQUETES EN PYTHON

Featured Replies

Posté(e)

Salut 0,

Aujourd'hui petit tuto sur les bases de la librairie 'requests' de python.
C'est une librairie très utile que j'utilise presque tous les jours donc je vous partages les connaissances que j'ai acquise aux cours de mon utilisation :catdance:

 

 

La structure d'une requête :

    Une requête est divisée en deux parties : son entête et son contenue. A partir de maintenant on utilisera leur appellation anglaise header et content.
Pour simplifier voyez l'header comme une sorte de titre à votre requête. Il va permettre au serveur de savoir comment gérer votre requête avec par exemple des infos sur : qui l'envoie, qu'est-ce qu'elle contient, etc ... C'est dans les headers que sont envoyés les cookies.
Le content c'est ce que vous voulez envoyer au serveur, votre formulaire par exemple.

 

 

L'utilisation de 'requests' :

    On peut diviser l'utilisation de requests en deux partie : Les requêtes simples et la multitude de requêtes.
Dans le premier cas on va définir les headers avant chaque requête. Mais imaginons que nous voulons nous connecter au serveur avant d’accéder à une ressource. Il y a donc deux requêtes à réaliser, l'une pour la connexion et l'autre pour l'accès aux données sachant que cette dernière à besoin des informations de la première. Dans ce cas-ci nous allons utiliser une "session" ce qui va permettre de garder les informations reçu lors de la première requêtes et des les envoyer lors de la seconde.
Pour créer une session, rien de plus simple :

import requests
session = requests.Session()

 


Première requête :

Nous allons maintenant faire notre première requête ! Nous allons récupérer l'heure.

import requests
r = requests.get('http://worldclockapi.com/api/json/est/now')
print(r.text)

Quelques petites précisions :
    - Le 'get' définis le type de requête à envoyer. Si le serveur attendais une requête post on le remplace juste par 'post'.
    - Le '.text' permet juste de récupérer le content de la réponse du serveur qui est stockée dans 'r'.

Si vous avez testé ce code vous avez peut-être remarqué que la réponse est en json. Pour pouvoir l'utiliser il va falloir ajouter ceci :

import requests
import json
r = requests.get('http://worldclockapi.com/api/json/est/now')
reponse_en_json = json.loads(r.text)
print(reponse_en_json['currentDateTime'])

Voilà, vous avez récupéré l'heure !

 

 

Mais les headers ?

    Jusque là nous avons pas spécifier d'headers car ceux généré automatiquement par requests suffisaient. Mais si ce n'était pas le cas, comment je fais ?

import requests
import json
custom_headers = {
    'User-Agent': 'monuseragent'
}
r = requests.get('http://worldclockapi.com/api/json/est/now', headers=custom_headers)
reponse_en_json = json.loads(r.text)
print(reponse_en_json['currentDateTime'])

Dans ce code j'ai modifié mon user agent, le serveur pense donc que je suis 'monuseragent'. Vous pouvez le modifier à votre guise, vous pouvez par exemple vous faire passer pour un navigateur.

 

 

L'envoie de données :

import requests
custom_headers = {
    'User-Agent': 'monuseragent'
}
mes_datas = {
    'champ1': 'valeur1',
    'champ2': 'valeur2'
}
r = requests.post('url', headers=custom_headers, data=mes_datas)


Dans ce code nous avons envoyer des données à 'url'.

 


Pour aller plus loin :

Pour finir je vais vous fournir un code d'exemple sur l'utilisation des sessions dont je vous ai parlé plus haut. Il est non fonctionnel, mais c'est plutôt facile de comprendre à quoi il était sensé servir.

import bs4 as BeautifulSoup
import requests

session = requests.Session()
r = session.get('https://www.starbucks.com/card', verify=False)

headers1 = {
    'Host': 'www.starbucks.com',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75',
    'Origin': 'https://www.starbucks.com',
    "X-NewRelic-ID":"VQUHVlNSARACUFRWDgADVA=="
}
session.headers.update(headers1)
soup = BeautifulSoup.BeautifulSoup(r.text, features="lxml")
token=soup.find('input',{'name':'__RequestVerificationToken'}).get('value')


data = {
    'Card.Number': 'xxxx',
    'Card.Pin': 'xxxx',
    '__RequestVerificationToken': token
}

r = session.post('https://www.starbucks.com/card/guestbalance', data=data, verify = False, allow_redirects=False)
print(r.status_code)
print(r.text)

Voilà vous pouvez voir qu'ici j'utilise la session pour chopper les cookies qui sont définis lors de la visite du site. Pour l'utilisation de BeautifulSoup je rentrerais pas en détails dessus, c'est simplement un parser de code html que j'utilise pour récupérer le token csrf.

 

 

Merci de m'avoir lu jusqu'ici, en espérant que cela vous a été utile :pepe_love:

 

Posté(e)
  • Auteur
il y a 23 minutes, wyuma a dit :

bien joué super lourd un des meilleurs topic de 0 :pepe_love:

Merci ! :pepe_love:

  • 2 mois après...
Posté(e)

Enfin en francais merci bg

Créer un compte ou se connecter pour commenter

Account

Navigation

Rechercher

Rechercher

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.