Bonjour,
Je galère à trouver un script tout simple en python et efficace pour me connecter à un site avec login et mot de passe, en vue de scraper un tableau csv ou son code source.
Merci de votre retour.
Bonjour,
Je galère à trouver un script tout simple en python et efficace pour me connecter à un site avec login et mot de passe, en vue de scraper un tableau csv ou son code source.
Merci de votre retour.
Salut,
Si vous venez ici, c'est pour avoir de l'aide pour écrire ce genre de script, pour trouver un script tout fait, un moteur de recherche fait l'affaire. Néanmoins, l'authentification a un site Web dépend du site, sans aucune idée du mécanisme d'authentification utilisé difficile de coder (et que chercher?).
- W
oups...
Salut,
voici le code source de la page d'identification du site (j'ai mon identifiant et mdp) :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Connexion</title> <link rel="stylesheet" href="css/login.css" /> </head> <body> <div class="center-screen"> <form action="/login.php" method="post"> <div class="container"> <label for="username"><b>Nom d'utilisateur</b></label> <input type="text" name="username" value="" required> <label for="password"><b>Mot de passe</b></label> <input type="password" name="password" required> <input type="submit" value="Se connecter"> </div> </form> </div> </body> </html>
le script que j'ai utilisé :
sauf que le résultat, il imprime le code source de la page d'identification. Il ne passe pas l'étape de la connexion et accès à la page souhaitée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 import requests with requests.Session() as s: url = 'https://www.exemple.fr/login.php' s.get(url) values = {'username': 'mon_identifiant', 'password': 'mon_mdp'} r = requests.post(url, data=values) #print r.content r = s.get("https://www.exemple.fr/tableau.php") print(r.text)
Bonjour
Et il te semble lisible? Tu ne te dis pas qu'il manque des tabulations par ci, par là? C'est pourtant important les tabulations, surtout en Python. Tu ne t'es pas un peu baladé sur le forum voir comment faisaient les autres à défaut d'aller lire les règles???
Accessoirement le site www.exemple.fr n'existant pas, on ne peut pas reproduire. Mais je suis dubitatif quant à ces deux instructions à suivre: r = requests.post(url, data=values) puis r = s.get("https://www.exemple.fr/tableau.php") parce que dans tous les langages du monde, remplir deux fois une même variable sans la traiter entre temps est soit inutile et du temps perdu (dans le meilleur des cas) soit une erreur de programmation.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Si vous avez testé ça sur l'URL https://www.exemple.fr, c'est peut être "normal"
- W
En copiant/collant, j'ai omis de remettre les tabulations. Mais en fait, elles disparaissent , donc j'ai remplacé pour ce message par des "_".
Le site original, je ne suis pas autorisé à le diffuser...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 import requests with requests.Session() as s: url = 'https://www.exemple.fr/login.php' s.get(url) values = {'username': 'mon_identifiant', 'password': 'mon_mdp'} r = requests.post(url, data=values) r = s.get("https://www.exemple.fr/tableau.php") <-----2nd page après connexion. print(r.text)
Je vois bien qu'il manque une commande intermédiaire. Je pensais r=requests.post... me permettait de me connecter
et que r=s.get.. d'aller à la page demandée. Après trouver une commande pour enregistrer un tableau csv.
J'avoue, je suis novice et bidouille, mais on me demande une petite appli html pour rendre visible des données de niveaux d'étiage dans les rivières bretonnes. Voili voilà.
On ne demande pas de faire ça à un débutant sans pouvoir lui mâcher le boulot et résoudre les difficultés qu'il pourrait rencontrer.
Pour le reste, il n'y a pas de grosse boulette dans le code => il faut vérifier 3 fois plutôt qu'une que les informations de connexion sont correctes (et puisqu'on ne peut pas le faire pour vous...).
- W
le site ne propose pas d'API ?
tu as regardé le résultat (la réponse) de ton post ?
Partager