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

Delphi Discussion :

[D6] Comment récupérer la liste des liens sur une page HTML ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut [D6] Comment récupérer la liste des liens sur une page HTML ?
    J'ai une liste d'URL, et sur chaque page, je dois récupérer la liste des liens pour faire une traitement.

    J'ai essayé les deux bouts de code de la FAQ, mais j'ai une violation d'accès à l'appel des fonctions.
    http://delphi.developpez.com/faq/?pa...nsdanspagehtml
    http://delphi.developpez.com/faq/?pa...executerlienIE

    Quelqu'un saurait-il comment faire ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  2. #2
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    J'ai essayé aussi http://delphi.developpez.com/faq/?pa...rowser#content sans plus de succès.

    re
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    As tu fait un pas à pas pour voir où çà plante ?
    Car j'utilise le 1er code (celui d'indy) et ca fonctionne parfaitement.

    PS: Tu peux réduire le nombre de ___ dans ta signature, ca dépasse la taille d'un carré normal
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Malatar
    As tu fait un pas à pas pour voir où çà plante ?
    Ca plante à l'appel de la fonction GetLinksInHTMLDoc, et avant l'exécution de la première ligne (de cette fonction).

    Sinon, ça pourait être pratique de préciser dans la FAQ d'où sort la fonction PosEx. C'est en cherchant sur le forum que je suis tombé par hasard sur le source de cette fonction.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut
    Citation Envoyé par Lung
    Ca plante à l'appel de la fonction GetLinksInHTMLDoc, et avant l'exécution de la première ligne (de cette fonction).

    Sinon, ça pourait être pratique de préciser dans la FAQ d'où sort la fonction PosEx. C'est en cherchant sur le forum que je suis tombé par hasard sur le source de cette fonction.
    Il me semble que PosEx est une fonction native à partir de D7... Donc pas de chance pour toi!

    Sinon, aurais-tu un bout de code de ce que tu as fais, parce que j'ai utilisé plusieurs fois webbrowser et Indy, j'ai jamais eu de problème particulier (notamment sur les codes que tu donnes en lien)

  6. #6
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par Gaadek
    Il me semble que PosEx est une fonction native à partir de D7... Donc pas de chance pour toi!
    Ah d'accord. Mais, le 7 est trop instable pour moi.


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    ListeLien := TStringList.Create;
    try
       GetLinksInHTMLDoc('http://www.unsite.com', ListeLien);
    ...
     
    finally
       ListeLien.Free;
    end;
     
    procedure TFormWeb.GetLinksInHTMLDoc(const szURL : String; var Links: TStringList);
       function PosEx(szSubStr, szStr: String; nIndex: Integer): Integer;
       var
          nMax: Integer;
       begin
          nMax := Length(szStr) - Length(szSubStr) + 1;
          if nIndex < 1 then
             nIndex := 1;
          while nIndex <= nMax do
          begin
             if Copy(szStr, nIndex, Length(szSubStr)) = szSubStr then
                Exit
             else
                Inc(nIndex);
          end;
       end;
    var
       HTTP: TIdHTTP;
       szContent, szLink: String;
       nPosition, nBeginPos: Integer;
    begin
       HTTP := TIdHTTP.Create(nil);
       try
          Links.Clear;
          szContent := HTTP.Get(szURL);
     
          nPosition := 0;
          while True do
          begin
             nPosition := PosEx('href', szContent, nPosition + 1);
             if nPosition = 0 then
                Break;
             Inc(nPosition, 4);
             while(nPosition < Length(szContent)) and (szContent[nPosition] in [#0, #10, #13, ' ']) do
                Inc(nPosition);
             if szContent[nPosition] <> '=' then
                Continue;
             Inc(nPosition);
             while(nPosition < Length(szContent)) and (szContent[nPosition] in [#0, #10, #13, ' ']) do
                Inc(nPosition);
             if szContent[nPosition] <> '"' then
                Continue;
             Inc(nPosition);
             nBeginPos := nPosition;
             while(nPosition <= Length(szContent)) and (szContent[nPosition] <> '"') do
                Inc(nPosition);
     
             szLink := Copy(szContent, nBeginPos, nPosition - nBeginPos);
             if(szLink <> '') and (Links.IndexOf(szLink) = -1) then
                Links.Add(szLink);
          end;
       finally
          HTTP.Free;
       end;
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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

Discussions similaires

  1. Envoyer des données sur une page HTML à partir de Delphi
    Par gillou026 dans le forum Débuter
    Réponses: 18
    Dernier message: 29/05/2013, 01h16
  2. Comment obtenir la list des liens d'une page web ?
    Par Battosaiii dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 27/10/2009, 13h21
  3. Récuperer des informations sur une page html
    Par shibby1337 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 22/11/2008, 15h32
  4. Réponses: 8
    Dernier message: 26/03/2006, 15h09
  5. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22

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