Page 1 sur 1

[R] Navigation en boucle avec IE3

Posté : sam. 21 nov. 2009 08:38
par Adenadels
Mon problème :

Une page internet avec plusieurs liens, qui pointent vers d'autres liens...
Mon problème, je voudrais créer un arbre de tous les liens hiérarchiquement.
J'arrive sur la première page, j'arrive à cliquer sur le premier lien, et ainsi de suite.
Mais ensuite, il faut que je retourne sur la page -1 afin d'explorer les liens suivant... et encore la page -1 jusqu'à arriver à ma page d'origine.

Exemple plus parlant :
► Afficher le texte
Voici le code que j'ai testé : (les liens sont tous dans un tableau, d'où le IETableWriteToArray)
► Afficher le texte
Je pensais qu'en itération ma boucle fonctionnerait, mais la variable $i me pose problème.

Merci

Re: [..] Navigation en boucle avec IE3

Posté : sam. 21 nov. 2009 13:02
par sylvanie
bonjour et bienvenu sur ce forum.
Pour l'instant je n'ai pas d'idée sur le sujet, mais sur un point de vue administratif merci de ne pas utiliser la coloaration dans cette partie du forum (elle est pour les udf)
Bon courrage

Re: [..] Navigation en boucle avec IE3

Posté : sam. 21 nov. 2009 17:22
par sylvanie
j'ai du un peu coder à l'aveugle, car je n'ai pas réussit à le personnaliser pour qu'il marche sur des sites s'exple, donc je vous laisserai tester ...
► Afficher le texte
Le script de départ n'est pas loins. les modifs essentiels :
Tout mettre en portée locale à la fonction, sinon (en global par défaut) à la première itération toutes les anciennes varialbles seront écrasées.
Idem pour l'obj IE que j'ai inclus dans la fonction (donc on va en avoir un certains nombres ...) et il faut donc gérer la destruction en sortie.
Tenez nous au courrant

Re: [..] Navigation en boucle avec IE3

Posté : sam. 21 nov. 2009 18:21
par Adenadels
Merci...

Dans une fonction les variables sont quand même en global par défaut... faudra que je le retienne ça...

Je vais tester le code lundi.. vu que c'est un intrAnet, je n'ai pas d'accès au site de chez moi.

J'ai enlevé la coloration syntaxique.

Re: [..] Navigation en boucle avec IE3

Posté : lun. 23 nov. 2009 18:28
par Adenadels
Voici le code qui a fonctionné :

Code : Tout sélectionner

[spoiler=]#include <Array.au3>
#include <IE.au3>
#include <String.au3>

_IEErrorHandlerRegister ()

; Ouverture du site
$oIE = _IECreate ("http://www.intranet.fr")
_IELoadWait ($oIE)

; Création du fichier texte de sortie
$FicOut = FileOpen("DTC.txt", 2)
; Check if file opened for reading OK
If $ficOut = -1 Then
  MsgBox(0, "Erreur", "Création dtc.txt impossible")
  Exit
EndIf

; Gestion de l'indentation
$Espace = 0

; Lancement de la boucle
_Parcourir()

Func _Parcourir()
  ; variables de suivi en LOCAL pour gestion de l'itération
  Local $oTable,$aTableData,$i,$Lien,$ctrl
  ; tous les liens sont toujours dans une table
  $oTable = _IETableGetCollection ($oIE, 0)
  ; lecture des liens (si colonne 3 contient élément -> lien, sinon simple fichier)
  $aTableData = _IETableWriteToArray ($oTable)
  ; on parcoure tous les liens
  For $i = 1 TO UBound($aTableData, 2) - 1
  ; Si lien on y va, et on indente la sortie
    If StringInStr($aTableData[2][$i], 'élément') Then
      $Lien = StringStripWS ($aTableData[0][$i], 1)
      ; on trace le lien et on indente de 2 espaces
      FileWriteLine($FicOut, _StringRepeat(" ", $Espace) & $lien)
      $Espace += 2
      $ctrl = _IELinkClickByText ($oIE, $Lien)
      _IELoadWait ($oIE)
      If $ctrl = 0 Then ContinueLoop
      _Parcourir()
    Else
      ; Sinon on trace les fichiers
      $Lien = StringStripWS ($aTableData[0][$i], 1)
      FileWriteLine($FicOut, _StringRepeat(" ", $Espace) & $lien)
    Endif
  Next
  ; retour arrière dans IE
  _IEAction ($oIE, "back")
  _IELoadWait ($oIE)
  ; indentation - 2 espaces.
  $Espace -=2
EndFunc
_IEQuit($oIE)
FileClose($FicOut)[/spoiler]
Merci à toi Sylvanie pour ton aide

PS : dans ton code, il s'ouvrait autant de fenêtres que de liens, mais toujours sur la première page !! mais en aveugle, c'était pas évident...