> Modules standards > Modules pour internet > requests
requests
import requests
Multipart post :
- response = requests.post(myUrl, files = {'file': open('myImage.png', 'rb')})
- on peut fixer le nom de fichier, le content-type et des headers : response = requests.post(myUrl, files = {'file': (myFile.png', open('myImage.png', 'rb'), 'application/png, {'Expires': '0'})})
Par défaut, requests suit automatiquement les redirections, et on peut avoir l'historique des réponses dans response.history : liste des responses précédentes.
Timeout :
- il faut utiliser pour chaque requête un timeout, sous peine qu'une requête bloque tout le programme.
- response = request.get(myUrl, timeout = 1) : le timeout est en secondes.
- si le timeout est dépassé, une exception est lancée.
On peut décomposer la requête faite avec une session :
- request = requests.Request('get', 'http://www.example.com', ...)
- preparedRequest = session.prepare_request(request)
- response = session.send(preparedRequest) (c'est à ce niveau que l'on peut rajouter des parameètres comme headers, cookies, etc ...)
ça permet d'afficher le contenu envoyé par :
print(preparedRequest.body.decode('utf8'))
https :
- par défaut, requests vérifie les certificats.
- on peut inactiver cette vérification en faisant : requests.get('https://www.example.com', verify = False)
- on peut donner un fichier comportant toute la chaîne des certificats avec requests.get(..., verify = 'myChain.pem')
- sinon, on peut aussi donner le fichier dans la variable d'environnement : export REQUESTS_CA_BUNDLE=myChain.pem
- les certificats utilisés par requests se situent dans : python3 -c 'import certifi; print(certifi.where())', mais apparemment, il y a aussi des certificats pour l'installation via pip
Parsing d'un document html : tree = html.fromstring(htmlTextContent) : renvoie un objet lxml.html.HtmlElement
Méthodes applicables aux objets HtmlElement :
- elt.tag : le tag de l'élément.
- elt.text le texte contenu dans l'élément.
- elt.attrib : dictionnaire des attributs de l'élément.
- for subelt in elt: : boucle directement sur les fils de l'élément.
- list(elt) : la liste des fils de l'élément.
- elt.findall('td') : tous les fils <td> de l'élément.
- elt.find('td') : le premier fils <td> de l'élément (renvoie None si non trouvé)
- elt.getparent() : le parent de l'élément.
- elt.xpath(xpathExpression) : renvoie les éléments correspondant à l'expression xpath
- elt.iter('span') : renvoie un itérateur sur tous les sous éléments <span> directs ou indirects.
- elt.text_content() : renvoie le contenu en texte (sans les tags html) de l'élément.
- etree.tostring(elt).decode() : pour avoir le contenu d'un élément (sous forme html). Faire from lxml import etree.
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert