143 votes

Comment utiliser Python pour se connecter à une page web et récupérer les cookies pour une utilisation ultérieure ?

Je veux télécharger et analyser une page web en utilisant python, mais pour y accéder, j'ai besoin de quelques cookies. Je dois donc d'abord me connecter à la page web via https. Le moment de la connexion consiste à envoyer deux paramètres POST (nom d'utilisateur, mot de passe) à /login.php. Pendant la demande de connexion, je veux récupérer les cookies de l'en-tête de réponse et les stocker afin de pouvoir les utiliser dans la demande de téléchargement de la page web /data.php.

Comment pourrais-je faire cela en python (de préférence 2.6) ? Si possible, je ne veux utiliser que des modules intégrés.

156voto

bpbp Points 818

Voici une version utilisant l'excellent demande bibliothèque :

from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    request = c.get('http://example.com/protected_page.php')
    print request.headers
    print request.text

146voto

Harley Holcombe Points 34618
import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()

resp.read() est le html direct de la page que vous voulez ouvrir, et vous pouvez utiliser opener pour afficher toute page utilisant votre cookie de session.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X