0% ont trouvé ce document utile (0 vote)
6 vues19 pages

Python Requests FR

Transféré par

angeattolou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues19 pages

Python Requests FR

Transféré par

angeattolou
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

python-requests

#python-
requests
Table des matières
À propos 1

Chapitre 1: Premiers pas avec les requêtes python 2

Remarques 2

HTTP pour les humains 2

Examples 2

Installation ou configuration 2

Demandes GET 3

Demandes POST 3

Autres méthodes de demande 3

Lire la réponse 4

Lecture des codes d'état 4

Chapitre 2: Automatisation de la connexion à l'aide de requêtes via la connexion unique 5

Examples 5

Exemple d'accès à des pages authentifiées à l'aide de requêtes 5

Chapitre 3: Des dossiers 7

Paramètres 7

Remarques 7

Examples 7

Téléchargement de fichier simple 7

Téléchargement de fichier avec paramètres manuels 7

Envoi de cordes comme des flèches 7

Chapitre 4: Envoi et réception de JSON 8

Examples 8

JSON POST 8

Recevoir JSON dans une réponse 8

ETL à partir des API Web avec des modules json et des requêtes 8

Chapitre 5: Framework Django 11

Examples 11

Installation et configuration 11

Concepts de base de Django 11


Concepts de base - Vues 12

Concepts de base - Modèles 12

Concepts de base - URL 13

Chapitre 6: Utilisation de requêtes derrière un proxy 14

Examples 14

Définition du proxy en code Python 14

Utilisation de variables d'environnement proxy 14

Crédits 16
À propos
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: python-requests

It is an unofficial and free python-requests ebook created for educational purposes. All the content
is extracted from Stack Overflow Documentation, which is written by many hardworking individuals
at Stack Overflow. It is neither affiliated with Stack Overflow nor official python-requests.

The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.

Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@[Link]

[Link] 1
Chapitre 1: Premiers pas avec les requêtes
python
Remarques

HTTP pour les humains


Requests est la seule bibliothèque HTTP non-GMO pour Python, sans danger pour la
consommation humaine.

Requests vous permet d'envoyer des requêtes HTTP/1.1 organiques, sans besoin de travail
manuel. Il n'est pas nécessaire d'ajouter manuellement des chaînes de requête à vos URL, ni
d'encoder vos données POST. Le pool de connexions Keep-Alive et HTTP est 100% automatique,
alimenté par urllib3 , qui est intégré à Requests.

Le pouvoir des requêtes:

>>> r = [Link]('[Link] auth=('user', 'pass'))


>>> r.status_code
200
>>> [Link]['content-type']
'application/json; charset=utf8'
>>> [Link]
'utf-8'
>>> [Link]
u'{"type":"User"...'
>>> [Link]()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Examples
Installation ou configuration

python-requests est disponible sur PyPI, l'index de package Python, ce qui signifie qu'il peut être
installé via pip:

pip install requests

Le code source mis à jour peut être trouvé sur le dépôt de requêtes GitHub

Si vous souhaitez l'installer depuis la source, vous pouvez le faire soit en clonant le dépôt GitHub:

git clone git://[Link]/kennethreitz/[Link]

Ou en obtenant l'archive ( -O écrit la sortie dans le fichier; -L suit les redirections):

[Link] 2
curl -OL [Link]

Ensuite, vous pouvez l'installer en exécutant le [Link]

python [Link] install

Quel que soit l’installation, vous pouvez commencer à l’utiliser en important la manière habituelle

>>> import requests


>>> [Link]('[Link]

Demandes GET

[Link]() crée une requête GET:

response = [Link]('[Link]

Transmettez les paramètres de requête sous forme de dictionnaire à l'argument params :

response = [Link]('[Link] params={"a": 1, "b": 2})

Pour les requêtes GET pouvant nécessiter une authentification de base, vous pouvez inclure le
paramètre auth comme suit:

response = [Link]('[Link] auth=('user', 'pass'))

Demandes POST

Les requêtes POST sont effectuées avec la méthode [Link]() .

Si vous devez envoyer une demande de formulaire Web en tant que corps POST, transmettez un
dictionnaire contenant des paires clé-valeur en tant qu'argument de data ; requests les encoderont
dans un corps application/x-www-form-urlencoded type application/x-www-form-urlencoded :

r = [Link]('[Link] data={"a": 1, "b": 2})

Si vous devez POSTER une charge utile json, vous pouvez utiliser json= . Cela définira
automatiquement l'en-tête Content-Type sur application/json

r = [Link]('[Link] data={"a": 1, "b": 2})

Autres méthodes de demande

Le module requests dispose de fonctions de premier niveau pour la plupart des méthodes HTTP:

r = [Link]('[Link] data=put_body)

[Link] 3
r = [Link]('[Link]
r = [Link]('[Link]
r = [Link]('[Link]
r = [Link]('[Link] data=patch_update)

Lire la réponse

response = [Link]("[Link]
text_resp = [Link]

Réponse JSON : pour les réponses au format json, le package fournit un décodeur intégré

response = [Link]('[Link]
json_resp = [Link]()

Cette méthode ValueError une ValueError en cas de réponse vide ou de contenu non analysable.

Lecture des codes d'état

L'attribut status_code contient le code d'état de la réponse

good_req = [Link]('[Link]
code_200 = good_req.status_code

notfound_req = [Link]('[Link]
code_404 = notfound_req.status_code

[Link].__dict__ fournira une liste des codes de statut http disponibles.

Il est possible d’utiliser raise_for_status pour vérifier si le status_code était 4xx ou 5xx et
déclencher une exception correspondante dans ce cas.

good_req = [Link]('[Link]
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = [Link]('[Link]
notfound_req.raise_for_status()
# raises [Link]: 404 Client Error

Lire Premiers pas avec les requêtes python en ligne: [Link]


requests/topic/1115/premiers-pas-avec-les-requetes-python

[Link] 4
Chapitre 2: Automatisation de la connexion à
l'aide de requêtes via la connexion unique
Examples
Exemple d'accès à des pages authentifiées à l'aide de requêtes

Nous avons parfois besoin d'analyser les pages, mais cela nécessite que vous soyez un
utilisateur autorisé. Voici un exemple qui montre comment effectuer une connexion à Oracle.

import sys
import requests
import json
from bs4 import BeautifulSoup

def mprint(x):
[Link](x)
print
return

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101


Firefox/7.0.1'}

mprint('[-] Initialization...')
s = [Link]()
[Link](headers)
print 'done'

mprint('[-] Gathering JSESSIONID..')

# This should redirect us to the login page


# On looking at the page source we can find that
# in the submit form 6 values are submitted (at least at the time of this script)
# try to take those values out using beautiful soup
# and then do a post request. On doing post [Link]
# we will be given message we have the data which is more than necessary
# then it will take us to the form where we have to submit data here
# [Link]
# once done we are signed in and doing and [Link](url) will get you the page you want.

r = [Link]("company's local url- a link which requires authentication")


if r.status_code != [Link]:
print 'error'
exit(1)
print 'done'

c = [Link]
soup = BeautifulSoup(c,'lxml')
svars = {}

for var in [Link]('input',type="hidden"):

[Link] 5
svars[var['name']] = var['value']

s = [Link]()
r = [Link]('[Link] data=svars)

mprint('[-] Trying to submit credentials...')


inputRaw = open('[Link]','r')
login = [Link](inputRaw)

data = {
'v': svars['v'],
'OAM_REQ': svars['OAM_REQ'],
'site2pstoretoken': svars['site2pstoretoken'],
'locale': svars['locale'],
'ssousername': login['ssousername'],
'password': login['password'],
}

r = [Link]('[Link] data=data)

r = [Link]("company's local url- a link which requires authentication")


# dumping the html page to html file
with open('[Link]','w') as f:
[Link]([Link])

[Link] comme mentionné dans le code est comme suit:

{
"ssousername":"example@[Link]",
"password":"put your password here"
}

Lien vers github - gist

Lire Automatisation de la connexion à l'aide de requêtes via la connexion unique en ligne:


[Link]
requetes-via-la-connexion-unique

[Link] 6
Chapitre 3: Des dossiers
Paramètres

Paramètres Fonction

fichier JSON Liste des chemins vers les fichiers.

content_type Types MIME

les en-têtes En-têtes HTTP

Remarques
La variable r dans les exemples contient les données binaires complètes du fichier que vous
envoyez.

Examples
Téléchargement de fichier simple

url = '[Link]
files = {'file': open('[Link]', 'rb')}
r = [Link](url, files=files)

Téléchargement de fichier avec paramètres manuels

url = '[Link]
files = {'file': ('[Link]', open('[Link]', 'rb'), 'application/[Link]-excel',
{'Expires': '0'})}
r = [Link](url, files=files)

Envoi de cordes comme des flèches

url = '[Link]
files = {'file': ('[Link]', 'some,data,to,send\nanother,row,to,send\n')}
r = [Link](url, files=files)
[Link]

Lire Des dossiers en ligne: [Link]

[Link] 7
Chapitre 4: Envoi et réception de JSON
Examples
JSON POST

Pour POST un corps JSON, transmettez une structure de données Python à l'argument json ; ici
un dictionnaire est posté mais tout ce qui peut être encodé en JSON fera:

import requests

# Create a dictionary to be sent.


json_data = {'foo': ['bar', 'baz'], 'spam': True, 'eggs': 5.5}

# Send the data.


response = [Link](url='[Link] json=json_data)
print("Server responded with %s" % response.status_code)

requests prend en charge l'encodage JSON pour vous et définit le Content-Type à l'
application/json .

Recevoir JSON dans une réponse

Lorsqu'une réponse contient du JSON valide, utilisez simplement la méthode .json() sur l'objet
Response pour obtenir le résultat décodé:

response = [Link]('[Link]
decoded_result = [Link]()

Cependant, cela n'échoue pas avec grâce; il JSONDecodeError un JSONDecodeError si l'objet de


réponse n'est pas JSONDecodeError JSON.

Vous voudrez peut-être d'abord vérifier le type de contenu MIME, pour une gestion des erreurs
plus élégante:

if 'application/json' in [Link]['Content-Type']:
decoded_result = [Link]()
else:
non_json_result = [Link]

ETL à partir des API Web avec des modules json et des requêtes

D'abord, importez les modules et définissez les chaînes de connexion. Si vous avez besoin de
paramètres, vous pouvez les placer directement dans la chaîne URL (une API dans ce cas) ou les
construire en tant que dict et les transmettre à l'argument params.

import requests
import json

[Link] 8
params = {'id': 'blahblah', 'output': 'json'} # You could use
[Link] directly.
API = '[Link]
APIcred = 'username','password'

Requests gère automatiquement HTTPBasicAuth et HTTPDigestAuth. Cet exemple d'API


renverra une chaîne JSON. Effectuez la requête GET et capturez la sortie. Relevez une erreur
pour un statut HTTP incorrect.

r = [Link](API, params = params, auth = APIcred)


r.raise_for_status()
#print([Link]) # Optionally print HTTP status code

Convertissez la chaîne de caractères JSON en objet python avec lequel vous pouvez travailler.
JSON ressemble visuellement à un dict Python, mais il existe des différences significatives entre
les valeurs NULL, true / false, etc.

r_dict = [Link]([Link])
print(r_dict)

Imaginez que la sortie que vous venez d’imprimer provient d’une base de données multi-lignes et
multi-colonnes et qu’elle est difficile à lire:

{'row': [{'Country': 'United States', 'pid': 'cc12608f-4591-46d7-b8fe-6222e4cde074',


'Status': '', 'FormerLastName': '', 'Degree': 'Business Administration'}, {'Country':
'Britain', 'pid': 'c9f2c6f7-f736-49d3-8adf-fd8d533bbd58', 'Status': '', 'FormerLastName':
'', 'Degree': ' Direction générale'}]}

Vous pouvez imprimer () une version plus lisible avec [Link] (). La ligne ci-dessous code
l'objet python en une chaîne de caractères JSON avec des tabulations et l'imprime.

print([Link](r_dict, indent = 4))

Sortie:

{
"row": [
{
"Country": "United States",
"pid": "cc12608f-4591-46d7-b8fe-6222e4cde074",
"Status": "",
"FormerLastName": "",
"Degree": "Business Administration"
},
{
"Country": "Britain",
"pid": "c9f2c6f7-f736-49d3-8adf-fd8d533bbd58",
"Status": "",
"FormerLastName": "",
"Degree": "General Management"
}

[Link] 9
]
}

Vous pouvez accéder aux éléments imbriqués dans un dict comme celui-ci:

print(some_dict['BuildingA']['Room12'])

Mais notre échantillon a un nombre arbitraire d'objets dans un tableau, qui est lui-même imbriqué
comme valeur d'une clé! Celles-ci sont accessibles avec un numéro de ligne commençant par 0.

Changeons l'une de nos valeurs «pays» de «Grande-Bretagne» à «Albanie»:

r_dict['row'][1]['Country'] = 'Albania'

Maintenant, envoyons ces données à une autre API. Les requêtes peuvent accepter un dict
directement dans l'argument json, par opposition à l'encodage d'une chaîne avec [Link] ().

r = [Link]('[Link] + 'api/carrots', json = r_dict, auth = APIcred)


r.raise_for_status()

Lire Envoi et réception de JSON en ligne: [Link]


requests/topic/3099/envoi-et-reception-de-json

[Link] 10
Chapitre 5: Framework Django
Examples
Installation et configuration

Django est un framework complet pour le développement web. Il alimente certains des sites Web
les plus populaires sur Internet.

Pour installer le framework; utilisez l'outil pip :

pip install django

Si vous l'installez sous OSX ou Linux, la commande ci-dessus peut entraîner une erreur
d'autorisation. Pour éviter cette erreur, installez le package pour votre compte utilisateur ou
utilisez un environnement virtuel:

pip install --user django

Une fois installé, vous aurez accès à l'outil de démarrage django-admin , qui créera un répertoire
contenant des paramètres par défaut pour démarrer le développement.

django-admin startproject myproject

Cela créera un répertoire myproject avec la mise en page de projet par défaut.

Concepts de base de Django

Django est une structure de développement Web riche en fonctionnalités et riche en


fonctionnalités. Il regroupe de nombreuses fonctionnalités pour offrir une expérience commune,
rapide et productive aux développeurs Web.

Les projets Django comprennent des paramètres communs et une ou plusieurs applications .
Chaque application est un ensemble de fonctionnalités avec des dépendances (telles que des
modèles et des modèles) regroupées sous forme de modules Python.

Le script de démarrage django crée automatiquement un fichier de paramètres pour votre projet,
avec les fonctionnalités les plus courantes activées.

Ce concept d’applications simplifie la fonctionnalité plug-and-play, et une vaste bibliothèque


d’applications est disponible pour gérer les tâches les plus courantes. Ce concept d'applications
est fondamental pour le django; Une grande partie des fonctionnalités intégrées (telles que
l'authentification des utilisateurs et le site d'administration) sont simplement des applications
Django.

Pour créer votre première application, à partir du répertoire du projet:

[Link] 11
python [Link] startapp yourapp

yourapp est le nom de votre application personnalisée.

Chaque application vous permet de développer:

1. Une série de vues - ce sont des morceaux de code qui sont exécutés en réponse à une
demande.

2. Un ou plusieurs modèles ; qui sont une abstraction des bases de données. Celles-ci vous
permettent de définir vos objets en tant qu'objets Python, et l'ORM intégré fournit une API
conviviale pour stocker, récupérer et filtrer des objets à partir de bases de données.

3. Les migrations, étroitement liées aux modèles, sont des scripts générés pour fournir une
méthode cohérente et fiable d’application des modifications dans vos modèles, à la base de
données.

4. Un ensemble d' URL auxquelles l'application répondra.

5. Une ou plusieurs classes admin; pour personnaliser le comportement de l'application dans


l'application d'administration django intégrée.

6. Tous les tests que vous pouvez écrire.

Concepts de base - Vues

Une view est un morceau de code qui répond à une demande et renvoie une réponse. Les vues
renvoient normalement des modèles avec un dictionnaire (appelé le contexte ) qui contient
généralement des données pour les espaces réservés dans le modèle. Dans les projets django,
les vues se trouvent dans le module de [Link] des applications.

La vue la plus simple renvoie une réponse directe:

from [Link] import HttpResponse

def simple_view(request):
return HttpResponse('<strong>Hello World</strong>')

Cependant, la plupart des vues utilisent un modèle:

from [Link] import render

def simple_template_view(request):
return render(request, 'some_template.html')

Un modèle est simplement n'importe quel fichier et peut éventuellement contenir un balisage
spécial pour les fonctionnalités ajoutées; cela signifie que les vues django peuvent renvoyer
n'importe quel type de réponse, pas seulement le HTML.

Concepts de base - Modèles

[Link] 12
Dans django, un modèle est simplement un fichier contenant des balises spéciales qui peuvent
être remplacées par des données de la vue.

L’exemple canonique canonique serait:

<strong>Hello {{ name }}, I am a template!</strong>

Ici, la chaîne {{ name }} identifie un espace réservé qui peut être remplacé par un contexte.

Pour rendre ce modèle depuis une vue, nous pouvons transmettre la valeur en tant que
dictionnaire:

from [Link] import render

def simple_view(request):
return render(request, '[Link]', {'name': 'Jim'})

Une fois cette vue rendue, le code HTML résultant sera Hello Jim, je suis un modèle! .

Concepts de base - URL

Dans django, il existe un mappeur d'URL qui mappe les URL vers des fonctions spécifiques
(vues) qui renvoient des réponses. Cette séparation stricte entre la disposition du système de
fichiers et la disposition des URL permet une grande flexibilité lors de l'écriture d'applications.

Tous les modèles d'URL sont stockés dans un ou plusieurs fichiers [Link] , et il existe un fichier
maître [Link] qui est lu par django en premier.

Django analyse les modèles dans l'ordre où ils ont été écrits et s'arrête lorsqu'il trouve une
correspondance avec l'URL demandée par l'utilisateur. Si aucune correspondance n'est trouvée,
une erreur est générée.

En mode débogage (activé en définissant DEBUG = True dans [Link] ), django imprimera un
message d'erreur détaillé lorsqu'une URL demandée ne correspond à aucun motif. En production,
cependant, django affichera un message 404 normal.

Un modèle d'URL consiste en une expression régulière Python, suivie d'un appelable (méthode ou
fonction) à appeler lorsque ce modèle est mis en correspondance. Cette fonction doit renvoyer
une réponse HTTP:

url(r'/hello$', simple_view)

Lire Framework Django en ligne: [Link]


django

[Link] 13
Chapitre 6: Utilisation de requêtes derrière un
proxy
Examples
Définition du proxy en code Python

Si votre code s'exécute derrière un proxy et que vous connaissez le point de terminaison, vous
pouvez définir ces informations dans votre code.

requests accepte un paramètre de proxies . Cela devrait être un dictionnaire qui mappe le
protocole à l'URL du proxy.

proxies = {
'http': '[Link]
'https': '[Link]
}

Notez que dans le dictionnaire, nous avons défini l'URL du proxy pour deux protocoles distincts:
HTTP et HTTPS. Chaque correspond à une URL et à un port individuels. Cela ne signifie pas que
les deux ne peuvent pas être les mêmes, cependant. Ceci est également acceptable:

proxies = {
'http': '[Link]
'https': '[Link]
}

Une fois votre dictionnaire défini, vous le passez en paramètre.

[Link]('[Link] proxies=proxies)

Utilisation de variables d'environnement proxy

requests utilise automatiquement des variables d'environnement spécifiques pour la détection de


proxy.

• HTTP_PROXY définira l'URL du proxy à utiliser pour les connexions HTTP


• HTTPS_PROXY définira l'URL du proxy à utiliser pour les connexions HTTPS

Une fois ces variables d'environnement définies, le code Python n'a pas besoin de transmettre
quoi que ce soit au paramètre proxies .

[Link]('[Link]

Lire Utilisation de requêtes derrière un proxy en ligne: [Link]

[Link] 14
requests/topic/5933/utilisation-de-requetes-derriere-un-proxy

[Link] 15
Crédits
S.
Chapitres Contributeurs
No

Andy, Batsu, Burhan Khalid, Community, dansyuqri, icesin, k-


Premiers pas avec
1 nut, Martijn Pieters, Meysam, mickeyandkaka, mphuie, OJFord,
les requêtes python
supersam654

Automatisation de la
connexion à l'aide de
2 lordzuko
requêtes via la
connexion unique

3 Des dossiers ReverseCold

Envoi et réception de
4 bendodge, Martijn Pieters, OJFord, Olli, Stan
JSON

5 Framework Django Burhan Khalid

Utilisation de
6 requêtes derrière un Andy
proxy

[Link] 16

Vous aimerez peut-être aussi