Parcourir une page web pour extraire des chaines

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Peter
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mer. 21 juin 2017 15:42
Status : Hors ligne

Parcourir une page web pour extraire des chaines

#1

Message par Peter »

Bonjour,

Je cherche à écrire un script qui parcourt une page web pour en extraire des chaines de caractères que je ne connais pas au préalable.

Cependant, les lignes qui contiennent less valeurs sont toujours de la forme : <td align=left><a href="valeuraobtenir">nomdulien</a></td> et ce sont les seuls lignes de cette forme là dans ma page.
J'ai essayé avec la fonction _IETableGetCollection mais il me renvoie, entre autres, le "nomdulien" mais pas la "valeuraobtenir".

J'ai essayé différemment avec la fonction _INetGetSource et cette fonction de recherche de chaine :

Code : Tout sélectionner

; extrait une chaine de caratère entre deux balises précisées en paramètre
Func _ExtractChaine($URLPage, $BaliseDebut, $BaliseFin)
$x = StringInStr($URLPage, $BaliseDebut) + StringLen($BaliseDebut)
$y = StringInStr(StringTrimLeft($URLPage, $x), $BaliseFin)
Return StringMid($URLPage, $x, $y)
EndFunc
Je récupère bien la première "valeuraobtenir" de la page. Mais quand je boucle sur d'autres itérations, il me renvoie toujours la première "valeuraobtenir" de la page sans passer à la suivante.

Est ce que vous auriez une piste pour m'aider ?
Merci d'avance

Pierre
PS: je suis débutant en autoit
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Parcourir une page web pour extraire des chaines

#2

Message par mikell »

Quand tu boucles avec la fonction _ExtractChaine, il faut supprimer la partie de texte entre le début et $y avant le tour de boucle suivant, par exemple en faisant $URLPage = StringTrimLeft($URLPage, $y)

Sinon, tes "valeuraobtenir" c'est des liens, donc tu pourrais utiliser _IELinkGetCollection

Tu peux aussi utiliser une expression régulière et récupérer tes liens dans une array :
#Include <Array.au3>
#include <Inet.au3>

$source = _INetGetSource(......)
$res = StringRegExp($source, '<td align=left><a href="([^"]+)', 3)
_ArrayDisplay($res)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Peter
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mer. 21 juin 2017 15:42
Status : Hors ligne

Re: Parcourir une page web pour extraire des chaines

#3

Message par Peter »

Bonjour,

Merci beaucoup pour ta réponse.
J'ai privilégié ta deuxième option car je la trouve plus élégante et elle marche parfaitement merci !

Pierre
Répondre