web-dev-qa-db-fra.com

Comment utiliser Python pour vous connecter à une page Web et récupérer des cookies pour une utilisation ultérieure?

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

Comment est-ce que je ferais ceci dans python (de préférence 2.6)?? Si possible je veux seulement utiliser des modules intégrés.

142
mandom
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 code html de la page que vous souhaitez ouvrir. Vous pouvez utiliser opener pour afficher toute page à l'aide de votre cookie de session.

146
Harley Holcombe

Voici une version utilisant l'excellente bibliothèque demandes :

from requests import session

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

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