IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[OLE] Récuperer les liens dans une page HTML avec IE


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut [OLE] Récuperer les liens dans une page HTML avec IE
    J'ai besoin de piloter IE avec l'OLE automation et de récuperer des infos dans une page, mais je maitrise moyen l'OLE:

    Comment savoir si la page est telechargée ? Comment utiliser IEOLE.readyState ? il y a t-il des conversion à faire ?

    Comment je fait pour connaitre le nombre de liens dans la page et comment les parcourir ? Comment utiliser IEOLe.Document.links ?

    J'ai de la doc sur les methodes, propriété OLE d'IE mais je ne sais pas comment les utiliser en Delphi à part pour des choses basiques comme aller sur une url.

    Est ce qu'il y a une doc sur l'OLE automation d'IE en Delphi ? j'ai un peu de doc mais cela reste basic, du genre navigation, back, forward.

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    C'est curieux, moi je passerait par la lecture du fichier pour y trouver les <a href="http://... " vu qu'un fichier HTML n'est après tout qu'un fichier texte.

    Autrement, j'imagine qu'on peut passer par le DOM (Document Object Model) mais je ne l'ai jamais fait.

    Alors bonne chance.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    J'ai besoin de piloter IE, c'est pour ça que je passe par OLE

    J'avance petit à petit, j'arrive à savoir quand le chargement de la page est terminée et le nombre de liens dans la page mais pas à récupérer les urls associées

    Un peu de code pour ceux que cela interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var
      IEApp: OLEVariant;
     
     
      // ...
      if(VarIsEmpty(IEApp))then
      begin
        IEApp := CreateOleObject('InternetExplorer.Application');
        IEApp.Visible := true;
        IEApp.Navigate(aURL);
     
        // READYSTATE_COMPLETE = 4
        while Cardinal(IEApp.readyState) <> 4 do sleep(1000);
      end;
     
     
        // ...
        nblinks := Cardinal(IEApp.Document.links.length);

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    regarde ici je crois tu trouveras qq infos.
    http://www.euromind.com/iedelphi/index.htm

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    J'ai finalement trouvé comment récupérer les urls, il ne me reste plus qu'à trouver comment clicker sur un lien.

    Un petit exemple rapide pour ceux que cela interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    var
      IEApp: OLEVariant;
     
     
      // ...
      if(VarIsEmpty(IEApp))then
      begin
        IEApp := CreateOleObject('InternetExplorer.Application');
        IEApp.Visible := true;
        IEApp.Navigate(aURL);
     
        // READYSTATE_COMPLETE = 4
        while Cardinal(IEApp.readyState) <> 4 do sleep(1000);
     
        // ...
        nblinks := Cardinal(IEApp.Document.links.length);
        Self.MemoLog.Lines.Add(Format('Nombre de liens = %d',[nblinks]));
     
        // Affiche les urls des liens de la page
        for i := 0 to nblinks - 1 do
        	Self.MemoLog.Lines.Add(string(IEApp.Document.links.item(i).href));
     
      end;
    La doc sur les objets accessible par OLE
    http://msdn.microsoft.com/workshop/browser/webbrowser/reference/Objects/InternetExplorer.asp

    EDIT: Finalement c'est facile de cliquer automatiquement sur un lien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Clique sur le premier lien de la page
    IEApp.Document.links.item(0).click;

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    si toutefois tu as d'autres infos sur ce serveur OLEAutomation n'hésite pas à nous les communiquer, on se fera une joie de les placer dans la FAQ

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Il y a des infos de base ici http://www.swissdelphicenter.ch/en/showcode.php?id=373 sinon le lien msdn est assez complet, mais pas très didactique.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Merci.
    Bon Dev :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer les marges dans une page html
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/01/2006, 04h41
  2. Réponses: 3
    Dernier message: 28/12/2005, 15h29
  3. réinitialiser les liens d'une page html
    Par sisco dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/11/2004, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo