[R] Ne pas afficher les images avec IE /parser une page HTML
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
[R] Ne pas afficher les images avec IE /parser une page HTML
Bonjour,
Bon le titre peut surprendre mais bon ^^, je taff sur un script qui doit se connecter a un site pour faire diverses actions. Bref le script récupère juste des infos pour les ressortir ensuite, j'ai réussi a me loger sur le site sans trop de difficulté avec la librairie IE, mais n'étant pas en haut débit j'aurais préférer ne pas lui faire télécharger les images (surtout qu'on ne vois pas la page donc les images ne servent a rien...), j'ai fouillé mais j'ai rien vu la dessus dans la description des fonction IE donc j'ai peur que cela soit impossible (sauf a bloqué directement les images dans ie mais bon y'a plus pratique j'espère )
Pour ce qui est de parser les informations, j'avoue na pas encore avoir chercher je profitais du topic pour posé la question en même temps (mais je vais me mettre en quête d'information des maintenant). Si je la met en même temps c'est parce qu'il s'agit du même projet . Ici le but est donc de récupéré les infos directement dans la pages HTML, pour le moment j'arrive juste a lui faire afficher le contenu entier de la page mais pas encore a lui faire récupéré les info qui m'intéresse. Donc si quelqu'un a une fonction ou un exemple a me montrer
Voila voila
Merci d'avance
Bon le titre peut surprendre mais bon ^^, je taff sur un script qui doit se connecter a un site pour faire diverses actions. Bref le script récupère juste des infos pour les ressortir ensuite, j'ai réussi a me loger sur le site sans trop de difficulté avec la librairie IE, mais n'étant pas en haut débit j'aurais préférer ne pas lui faire télécharger les images (surtout qu'on ne vois pas la page donc les images ne servent a rien...), j'ai fouillé mais j'ai rien vu la dessus dans la description des fonction IE donc j'ai peur que cela soit impossible (sauf a bloqué directement les images dans ie mais bon y'a plus pratique j'espère )
Pour ce qui est de parser les informations, j'avoue na pas encore avoir chercher je profitais du topic pour posé la question en même temps (mais je vais me mettre en quête d'information des maintenant). Si je la met en même temps c'est parce qu'il s'agit du même projet . Ici le but est donc de récupéré les infos directement dans la pages HTML, pour le moment j'arrive juste a lui faire afficher le contenu entier de la page mais pas encore a lui faire récupéré les info qui m'intéresse. Donc si quelqu'un a une fonction ou un exemple a me montrer
Voila voila
Merci d'avance
Modifié en dernier par SurPriseS le dim. 09 sept. 2007 16:38, modifié 2 fois.
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
oui y a une astuce faut lire dans le regedit la clé imagedisplay
de de explorer et de l'indiquer sur no
j'ai un exemple donc je le tape tel quel
toggle_image(1) indique a explorer de ne pas indiquer les images
juste après la boucle while 1 le toggle_image() reviend indiquer ON
de de explorer et de l'indiquer sur no
j'ai un exemple donc je le tape tel quel
toggle_image(1) indique a explorer de ne pas indiquer les images
juste après la boucle while 1 le toggle_image() reviend indiquer ON
Code : Tout sélectionner
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
Toggle_Images(1)
$oIE = _IECreate ()
_IENavigate ($oIE, "http:\\www.google.com")
While WinExists("Internet Explorer")
Sleep(250)
WEnd
Toggle_Images()
Func Toggle_Images($On_Off=0)
If $On_Off == 0 Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main", "Display Inline Images", "REG_SZ", "yes")
Else
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main", "Display Inline Images", "REG_SZ", "no")
EndIf
EndFunc ;==>Toggle_Images
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Ok, sa revient a désactiver l'affichage complet des images mais bon c'est déjà sa mais j'avais pas penser que cette valeur étais dans la base de registre... c'étais pourtant logique ^^ Merci en tout cas
Bon j'ai testé sa marche nikel, beaucoup plus rapide a ressortir les info maintenant
Merci beaucoup
Plus qu'a parsé
Bon j'ai testé sa marche nikel, beaucoup plus rapide a ressortir les info maintenant
Merci beaucoup
Plus qu'a parsé
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Euh, ranger la page pour en ressortir les infos, enfin c'est comme sa que je le connais (mais bon je suis plutôt orienté réseau, la prog c'est pas trop mon fort donc j'utilise peut être se mot a tord )
Je sais pas trop si je suis clair dans se que je dit
Définition de wikipédia :
http://fr.wikipedia.org/wiki/Analyse_syntaxique
Je sais pas trop si je suis clair dans se que je dit
Définition de wikipédia :
http://fr.wikipedia.org/wiki/Analyse_syntaxique
- sylvanie
- Niveau 11
- Messages : 1550
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
pour les extractions d'info, va falloir passer par les fonctions de type stringinstr, stringregexp ...
par exemple en voici un que j'ai fait, qui retrouve le nombre de messages postés sur ce forum, et qui me fait un popu si il y a du nouveau :
par exemple en voici un que j'ai fait, qui retrouve le nombre de messages postés sur ce forum, et qui me fait un popu si il y a du nouveau :
Code : Tout sélectionner
If FileExists ( @tempdir& " \indexautoit.txt " ) = = 0 Then
$fic = FileOpen ( @tempdir& " \indexautoit.txt " , 2 )
$index = 0
Else
$fic = FileOpen ( @tempdir& " \indexautoit.txt " , 0 )
$index = FileReadLine ( $fic )
EndIf
FileClose ( $fic )
$line = " "
while 1
InetGet ( " http://www.autoitscript.fr/index.php " , @TempDir& " \autoit.htm " , 1 , 0 )
If ( @error ) Then
MsgBox ( 16 , " Erreur " , " Impossible de joindre l'url " )
Exit 1
EndIf
$fic = FileOpen ( @TempDir& " \autoit.htm " , 0 )
$line = FileRead ( $fic , FileGetSize ( @TempDir& " \autoit.htm " ) )
FileClose ( $fic )
$nOffset = 1
$nb = StringRegExp ( $line , 'posté un total de <b> ( [\d] + ) <' , 1 , $nOffset )
If @error = 2 Then
MsgBox ( 0 , " Erreur " , " Problème lors de la lecture du nbr de messages " )
Exit 1
EndIf
$nb = $nb[0]
If $nb <> $index Then
MsgBox ( 48 , " Autoit " , " Nouveau ( x ) Message ( s ) " )
$fic = FileOpen ( @tempdir& " \indexautoit.txt " , 2 )
FileWrite ( $fic , $nb )
FileClose ( $fic )
$index = $nb
EndIf
sleep ( 60000 )
WEnd
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Bon j'ai réussi a parser mes info comme je le voulais :p et avec une autre méthode que celle proposé par sylvanie donc je la post ici :
Pour résumé :
- On cherche les tag Input
- On boucle dessus et on cherche ceux qui on un maxlenght = 15 et = 20
- On place ensuite le name de l'input trouvé dans la bonne variable
Vala
Code : Tout sélectionner
$oInputs = _IETagNameGetCollection ( $oIE , " input " )
For $oInput In $oInputs
if $oInput.maxlength = 15 then
$oologin = $oInput.name
ElseIf $oInput.maxlength = 20 then
$oopassword = $oInput.name
endif
Next
- On cherche les tag Input
- On boucle dessus et on cherche ceux qui on un maxlenght = 15 et = 20
- On place ensuite le name de l'input trouvé dans la bonne variable
Vala
Ca marche peut-etre dans ton cas mais si plusieur input avec le meme nombre de maxlenght se trouve dans une page ce que tu récupere est érronné.SurPriseS a écrit : Pour résumé :
- On cherche les tag Input
- On boucle dessus et on cherche ceux qui on un maxlenght = 15 et = 20
- On place ensuite le name de l'input trouvé dans la bonne variable
Vala
Pour parser un document (text, source html...etc), il faut travailler avec les expression régulières qui sont hyper puissante pour cela quand on les maitrise.
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Oui oui je sais bien que sa marche au moins dans mon cas pour les regex je galère a les utiliser sous autoit, sa marche jamais comme je veux et je comprend jamais pourquoi sa marche pas =( Donc si tu as des documents qui détails plus l'utilisation des regex que dans l'aide d'autoit, je suis preneur
bref pour au moins la partie qui m'intéresse, j'avais la chance d'avoir des value différentes dans les 2 valeurs que je voulais récupéré donc tout bénef pour moi.
bref pour au moins la partie qui m'intéresse, j'avais la chance d'avoir des value différentes dans les 2 valeurs que je voulais récupéré donc tout bénef pour moi.
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
on va ouvrir un post special regex moi aussi ca m'interresse et il vrai que c'est hyper puissant (plus rapide).
mais sa serai bien d'avoir plus d'exemple que du jargon à rien comprendre ^^'
dans l'include d'ie t'a un peu de tout iedochtml iereadhtml (je fait çà de mémoire sa doit etre erroné ^^')
je fait pas avancer le chmilblik ^__^
le code ci dessous avec maxlengt c'est pourquoi ?
en faite tu recherche juste les case name et password ?
comme pour une connection automatique ?
IEFormGetObjByName et la tu recherche name et password enfin je crois sa fait un bail que j'ai plus fait un truc avec ie
mais sa serai bien d'avoir plus d'exemple que du jargon à rien comprendre ^^'
dans l'include d'ie t'a un peu de tout iedochtml iereadhtml (je fait çà de mémoire sa doit etre erroné ^^')
je fait pas avancer le chmilblik ^__^
le code ci dessous avec maxlengt c'est pourquoi ?
en faite tu recherche juste les case name et password ?
comme pour une connection automatique ?
IEFormGetObjByName et la tu recherche name et password enfin je crois sa fait un bail que j'ai plus fait un truc avec ie
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
C'est exactement sa c'est une connexion automatique a un site presque sécurisé , il change le nom des champs toutes les 24H donc il faut les récupéré pour pouvoir se loguer vala
Et par chance il utilise pas le même maxlenght pour la partie login et password donc super simple a récupérer même pour un boulay comme moi et oui il y'a beaucoup de fonction intéressante avec les librairies IE faut juste les maitriser
edit : j'avais pas tout lu, enfaite le problème c'est que c'est justement le name qu'on cherche
Et par chance il utilise pas le même maxlenght pour la partie login et password donc super simple a récupérer même pour un boulay comme moi et oui il y'a beaucoup de fonction intéressante avec les librairies IE faut juste les maitriser
edit : j'avais pas tout lu, enfaite le problème c'est que c'est justement le name qu'on cherche
L'aide d'autoit est trés complete et trés bien expliquer je trouve et c'est avec elle que j'ai appri a les maitriser, bon c'est sur que pour ceux qui parle pas anglais... c'est moyen.SurPriseS a écrit :Donc si tu as des documents qui détails plus l'utilisation des regex que dans l'aide d'autoit, je suis preneur
Il y a cet article sur les forum de ccm qui explique pas trop mal sinon :
http://www.commentcamarche.net/php/phpreg.php3
C'est pour du php mais les regexp sont les meme que ça soit sous php, autoit... python...etc
Et c'est expliqué en français.
-
- Niveau 6
- Messages : 289
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Je te remercie pour le lien, je crois que je l'avais déjà trouvé quand je mettais mis au php pour se qui est de l'aide d'autoit :s c'est pas quelle soit en anglais le problème c'est que je trouve que sa manque d'exemple :\
Mon problème reste que je sais jamais si je fait correctement ma regex :
exemple :
L'url du site resemble a un un truc comme sa :
http://machin.com/plop.php?test=123456
Enfaite je veux testé qu'après le = de l'url on est bien une série de 6 chiffre et si oui d'afficher le titre du lien. Mais enfaite j'ai l'impression que sa marche pas avec stringcompare, j'ai essayer plein de méthode différente pour le regex (et même avec celle plus haut sa ne fonctionne pas)
Mon problème reste que je sais jamais si je fait correctement ma regex :
exemple :
Code : Tout sélectionner
For $oInput In $oInputs
if StringCompare ($oInput.href , "URL" & "^.{6}$" ) = 0 then
GUICtrlCreateLabel($oInput.innerHTML ,20,$y)
$y = $y + 20
EndIf
Next
http://machin.com/plop.php?test=123456
Enfaite je veux testé qu'après le = de l'url on est bien une série de 6 chiffre et si oui d'afficher le titre du lien. Mais enfaite j'ai l'impression que sa marche pas avec stringcompare, j'ai essayer plein de méthode différente pour le regex (et même avec celle plus haut sa ne fonctionne pas)
A ce moment là pour bien ciblé tes 6 chiffre :SurPriseS a écrit : Enfaite je veux testé qu'après le = de l'url on est bien une série de 6 chiffre
Exemple:
Code : Tout sélectionner
$URL = "http://machin.com/plop.php?test=123456"
$Test6Chiffre = StringRegExp($URL, "(?:http://.*?=)([0-9]{6})", 3)
MsgBox(0, "", $Test6Chiffre[0])
Meme si c'est payant, il te faudrais Regexbuddy : http://www.regexbuddy.com/
On peut avoir une version d'essai et il est trés bien pour apprendre les expression reguliere.
Modifié en dernier par Max5 le jeu. 13 sept. 2007 11:08, modifié 1 fois.
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
est-ce juste = (?:http://.*?=)(\d{6})
\d = digit (tout ce qui sera chiffre)
{} nombre de caractère en répetition ?
pas mal l'outils que tu propose max5, je visionne les video et c'est justement ce qui me faudrait (l'outils qui simplifie mais faut bien maitriser l'outils apparement ))
alternative
C:\Program Files\AutoIt3\Examples\Helpfile\StringRegExpGUI.au3
seul parttern : (.*?)
je dispose de la version v3.2.4.2 (oui toujours pas à jour)
fonctionnant avec un fichier ini pour le rajout de parttern()
avec des exemple on comprend un peu mieux
maintenant code snippet ^^'
j'ai ouvert un post sur le sujet merci de participer
merci :;-)
\d = digit (tout ce qui sera chiffre)
{} nombre de caractère en répetition ?
pas mal l'outils que tu propose max5, je visionne les video et c'est justement ce qui me faudrait (l'outils qui simplifie mais faut bien maitriser l'outils apparement ))
alternative
C:\Program Files\AutoIt3\Examples\Helpfile\StringRegExpGUI.au3
seul parttern : (.*?)
je dispose de la version v3.2.4.2 (oui toujours pas à jour)
fonctionnant avec un fichier ini pour le rajout de parttern()
avec des exemple on comprend un peu mieux
maintenant code snippet ^^'
j'ai ouvert un post sur le sujet merci de participer
merci :;-)