Bonjour,
Je viens ici après 2h sur internet à chercher la solution. Pour information je ne suis pas développeur web ou réseaux, beaucoup de chose m’échappe. C’est aussi l’occasion pour moi de mieux comprendre.
J’essaye de parser un site (qui semble codé alarache) pour connaître le budget restant sur mon badge pour la cantine. Voici comment cela se passe avec Firefox.
La page d’accueil est ici “1”
https://www.e-chargement.com/default.asp
j’y mentionne mon numéro de badge et mon nom, je clique et j’arrive ici en “2”
https://www.e-chargement.com/recharg_badge.asp
où il est mentionné le reste et la possibilité de recharger.
Je peux recharger autant de fois que je veux cette page “2” je vois la même chose. Si je n’ai pas renseigné les infos de la page “1” je vois ce que vous voyez vous, la page “1” j’imagine.
Bon si je retourne encore en page “1”, bah c’est comme si je m’étais pas identifié (ouaip…).
Bref, j’ai essayé avec la bibliothèque python request et j’arrive jamais en page 2. J’ai essayé avec les sessions (histoire de cookie je sais pas…)
avec
response_post = session.post(url, data=payload)
payload
qui ressemble a
parce que c’est ce que j’ai compris pour la soumission de formulaire (method="post") quand j’inspecte. J’ai essayé plein de truc, mais je sais pas où chercher l’info pour que ça marche.
payload = {
"badge_number": "un_nombre",
"badge_nom": "mon_nom",
}
Merci de votre aide
FO
# hello
Posté par guitou . Évalué à 2 (+1/-0).
Alors, je sais pas depuis quel jour a 17H il est sense etre retabli, mais ceci explique peut-etre tes deboires
++
Gi)
[^] # Re: hello
Posté par François (site web personnel) . Évalué à 2 (+1/-0).
J'ai jamais vu un site pareil, si tu vas sur
https://www.e-chargement.com/orsayuniversite/restau/
je tombe sur la bonne page, avec l'url transformé en celle que je mentionne. Le message que tu raportes est toujours là. Le site rend le service attendu en tout cas. Ça me rend toctoc :)…
[^] # Re: hello
Posté par guitou . Évalué à 2 (+1/-0).
Alors du coup, la premiere etape va consister a faire un GET https://www.e-chargement.com/orsayuniversite/restau/ pour suivre le redirect (302) puis t'assurer que tu es bien tombe sur
default.asp
et que le formulaire est dispo, ensuite seulement tu pourras passer au POST versidentif_badge.Asp
En ponçant un peu l'onglet reseau de la console dev dans le navigateur, tu devrais pouvoir t'en sortir.
Et si tu t'en sors pas avec request ou qu'il y a du cloudfare ou equivalent planque (mais j'ai pas l'impression), tu peux aussi essayer avec playwright par exemple.
Bon courage.
++
Gi)
# MechanicalSoup
Posté par Bernez . Évalué à 3 (+2/-0).
Voici une solution avec MechanicalSoup, une surcouche à requests et BeautifulSoup (un analyseur de HTML) :
Les variables
browser.page
ettd
sont des objets BeautifulSoup. Il faut lire un peu la doc pour comprendre comment ils marchent.MechanicalSoup automatise quelques opérations qu'on pourrait réaliser manuellement avec requests. L'idée est d'aller sur la page https://www.e-chargement.com/orsayuniversite/restau/, puis de poster le formulaire, et exploiter la page obtenue.
Avec requests, ça donnerait un truc du genre :
pour initialiser la session. Puis il faut poster le formulaire :
La valeur de
badge_div
est celle d'un<input type="hidden">
du formulaire, à récupérer avec BeautifulSoup. Après il reste à exploiterreponse.text
.Les sessions requests se chargent de gérer les redirections et les cookies.
# FF + curl
Posté par steph1978 . Évalué à 2 (+0/-0).
dans firefox,
La première ligne qui s'affiche dans l'onglet réseau est la requête de soumission du formulaire.
Faire click-droit, "copy as curl", chez moi ça donne:
Le plus important étant la deuxième ligne - on fait un POST - et la dernière qui donne le format des informations attendue.
En jouant cette commande telle quelle dans un terminal, on retrouve le même résultat que dans le navigateur.
Après, on peut s'amuser à enlever les lignes d'entête (
-H
) qui paraissent inutiles jusqu'à ce que cela ne marche plus. On peut aussi combiner deux requêtes pour récupérer des cookies si nécessaire. Mais la base est là.Happy scraping.
# Résolu
Posté par François (site web personnel) . Évalué à 1 (+0/-0).
Bonjour et merci beaucoup pour votre aide. J'ai appris des trucs mais je suis pas encore super affûté sur les requêtes, redirection, curl etc.
La solution avec MechanicalSoup à très bien marché, et même direct, donc merci !
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.