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.
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.
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)