[..] Extraire donnée de chrome

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

[..] Extraire donnée de chrome

#1

Message par JulienBoul »

Bonjour,

Sujet redondant, sur forum US ou fr, mais le dernier réellement frais, date de 2013 et je me prend à espérer que depuis, les choses ont évoluées.

Je cherche à extraire des infos d'un site web pro tournant sous chrome, notamment un montant de devis (cf PJ).
span montant devis.jpg
Partie gauche: ma page web - partie droite: les informations suite à l'inspection de la page web

Par défaut, je vois bien le système bourré de ControlClick, de ControlSend et de regex...

Dans l'idéal, j'aurai aimé que le logiciel tourne en "sous marin" et qu'il ne gène pas l'utilisateur, pas d'utilisation du clipboard, pas de pages qui s'affichent, se réduisent, etc.

Par défaut, je me suis rabattu sur tout ce que je ne veux pas faire du style:

Code : Tout sélectionner

Sleep (2000)
ControlClick("PEC - Google Chrome","Chrome Legacy Window","","left",1,699,172) ; avec les coordonnées, c sale car ça dépend de l'affichage de l'utilisateur...
ControlSend("PEC - Google Chrome","Chrome Legacy Window","","^{a}") ; là, j'ai la page chrome qui apparaît à l'écran et gène l'utilisateur
ControlSend("PEC - Google Chrome","Chrome Legacy Window","","^{c}")
$String_devis = ClipGet() ; Ici encore, je stock des données dans le clipboard... Sale.
$Montant_devis = StringRegExp($String_devis, "(?im)^Total TTC	 	(\N+)(?:  EUR)", 1,-1)
Sleep (50)
msgbox(0,"",$Montant_devis); Et pour finir, mon expression régulière est vérolée, et je n'arrive pas à afficher mon montant de devis.


Je manque cruellement de bases, si vous avez des idées autres que celle que j'ai utilisée pour arriver à mes fins, je suis ouvert.
Merci de vos conseils.

Julien.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Extraire donnée de chrome

#2

Message par orax »

Le site doit-il forcément être ouvert avec Chrome ? Peut-être qu'un simple InetRead pourrait faire l'affaire pour récupérer le code source de la page.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Extraire donnée de chrome

#3

Message par JulienBoul »

Ha, trop bien, Orax, tu réfléchis différemment, je ne savais pas qu'on pouvais lire un code source d'une page web, merci pr l'info. La piste me semble top, ça me permettrai de chopper toutes mes variables d'un seul coup de façon super propre et sans avoir trop de fenêtres qui bougent à l'écran!

Je viens de faire une recherche dans le code source de la page, mais il semblerai que mon montant de devis ne s'affiche pas. En effet, Il s'affiche dans le code source du cadre (pourquoi faire simple). Je me suis rendu compte qu'il y avait un traitement particulier du cadre dans lequel je cherche mes infos car lorsque je fais un ctrl+A sur ma page, les données ne se sélectionnent pas indépendamment, mais c'est le cadre entier qui se sélectionne. Cf l'explication en image ->
Sans titrec.jpg
Dans mon code source, je trouve bien la valeur "DEVIS" (sous format 208.12) et je peux m'en sortir avec un regex.
id="ttc_f14" >208.12</SPAN>
Les montants peuvent aller de 0.00 à 9999.99.

Alors la question est simple, puis je aller chercher le code source de "tel cadre" via une ligne de commande plutôt que d'utiliser un clic droit aux coordonnées voulus etc? (car si tel est le cas, la mise en page devra être standardisée etc, ça n'est pas fiable dans le temps)

Quelqu'un aurait il un bout de code qui permettre d'utiliser la fonction InetRead? Je ne connais pas cette fonction et mon msgox me renvoi toujours un pop up blanc, sans texte (le fait d'utiliser chrome peut il avoir une incidence? Mon navigateur n'est spécifié nulle part dans mon code)

Merci à vous.
Répondre