Comment utiliser Python pour se connecter à une page Web et récupérer des cookies pour un usage ultérieur?

je veux télécharger et analyser la page Web en utilisant python, mais pour y accéder, j'ai besoin de quelques cookies. Par conséquent, je dois d'abord me connecter sur https à la page web. Le moment de connexion implique l'envoi de deux messages (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 que je puisse les utiliser dans la demande de télécharger la page web /données.php.

Comment faire en python (de préférence 2.6)? Si possible, Je ne veux utiliser que des modules de construction.

142
demandé sur Harley Holcombe 2008-10-10 03:14:43

2 réponses

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 droit de la page que vous voulez ouvrir, et vous pouvez utiliser opener pour voir n'importe quelle page en utilisant votre cookie de session.

145
répondu Harley Holcombe 2011-09-19 00:40:23

Voici une version utilisant l'excellent requests library:

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)
153
répondu Boden Garman 2015-03-16 08:59:16