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

C++ Discussion :

Lecture page web


Sujet :

C++

  1. #1
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut Lecture page web
    Bonjour,

    J'aimerais savoir comment manipuler une page web, par exemple me connecter à une url et récupérer le code source, valider un formulaire ...
    Je suppose que je peux m'appuyer sur une classe de la librairie boost.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Bonjour,

    J'aimerais savoir comment manipuler une page web, par exemple me connecter à une url et récupérer le code source, valider un formulaire ...
    Salut,
    Peux-tu être un peu plus précis sur l'aspect 'manipuler'.
    Demander une ressource URL, ça demande en général de construire une requête HTTP, de l'envoyer à un serveur et d'examiner sa réponse. Je ne crois pas qu'il y ait un tel module dans Boost (mais je peux me tromper). Boost.Asio s'arrête au niveau TCP il me semble. Tu trouves ce niveau d'abstraction directement dans les framework (MFC, Qt, wxWidgets). As-tu fais une recherche google pour voir s'il existait des bibliothèques en C++ ?
    En revanche, pour parser le contenu HTML d'une page, là c'est plus délicat. A nouveau, les framework ont souvent quelques classes dédiées.

  3. #3
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Je pense que la librairie libcurl me permet de faire ça => http://fr.wikipedia.org/wiki/CURL

    Je vais jeter un oeil de ce côté...

  4. #4
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 242
    Points
    242
    Par défaut
    Bonjour,

    Il existe plusieurs méthodes pour le faire avec le c++ Builder de Borland sans librairies externes.

    Si tu veux récupérer des informations et/ou naviguer de manière automatique (ou non) sur une page tu peux utiliser par exemple le composant TcppWebBrowser de la VCL.

    Après tu peux aussi le faire non pas par programmation mais en utilisant un plugins firefox comme Imacros.

    Si le but est seulement de récupérer des informations, c'est le plus simple à mon avis.
    Désolé, on savait pas que c'était impossible, alors on l'a fait

  5. #5
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    En fait je veux faire un programme qui surveille des annonces par exemple dans leboncoin ou ebay. Le programme se connectera tous les X temps sur le site et parsera la page selon les critères que j'ai choisi.

    Par exemple, si un iphone est en vente sur leboncoin pour moins de 400€, alors le programme m'enverra un mail pour me prévenir, d'où l'utilité de me connecter sur une page web.

  6. #6
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 242
    Points
    242
    Par défaut
    Il existe peut-etre d'autres outils performants pour faire ce que tu veux faire, mais de ce que je connais le plus rapide serait le borland C++ Builder

    Tu as juste à faire un fichier -> nouveau projet, tu poses le composant TCppWebBrowser dessus ainsi qu'un TTimer et tu mets dans l'événement "OnDownloadcomplete" de ce composant le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::WebDownloadComplete(TObject *Sender)
    {
       Timer1->Enabled = true;      
    }
     
    //---------------------------------------------------------------------------
    puis tu rajoutes un composant TMemo ( qui est une sorte de notepad ) qui va servir à stocker le code source de page web

    ensuite dans le timer tu colles le code suivant :
    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
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
        Timer1->Enabled=false;
        Memo1->Clear();
        AnsiString aContenuText = "";
        AnsiString aContenuHTML = "";
        Variant vDocument = Web->ControlInterface->Document;
        if (((IDispatch *)vDocument) != NULL)
        {
          Variant vBody = vDocument.OlePropertyGet("Body");
          Variant vContenuText = vBody.OlePropertyGet("InnerText");
          Variant vContenuHTML = vBody.OlePropertyGet("InnerHTML");
          aContenuText = vContenuText;
          aContenuHTML = vContenuHTML;
          Memo1->Lines->Add(vContenuHTML); // mets aContenuText à la place de vContenuHTML si tu veux la page en version texte et non le code source
        }
        Decode();
    avec Decode() ta fonction qui va aller chercher l'information que tu veux dans la page web.

    Et le tour est joué !

    Rajoute quand même un TBouton pour pouvoir lancer la lecture de ta page web :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       WideString  Adresse_Web = "www.developpez.com";
       Web->Navigate(Adresse_Web);
    }
    Ensuite pour envoyer un e-mail tu peux utiliser le composant NMPOP3 qui est encore plus facile à utiliser que le TCppWebBrower, un simple F1 sur le composant et tu as un exemple tout fait il me semble.
    Je l'avais fait à l'époque mais je n'ai pas le code source sous les yeux dsl ^^

    En tout cas même si tu connais pas et avec ce que je t'ai donné, en une demi-journée ou une journée c'est torché (lecture web + mail)

    bonne chance
    Désolé, on savait pas que c'était impossible, alors on l'a fait

  7. #7
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Merci, je vais y jeter un oeil

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Merci, je vais y jeter un oeil
    Comme dit précédemment, tu as le même niveau d'abstraction avec la plus part des framework (MFC, wxWidgets, Qt).

  9. #9
    Membre averti Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Points : 302
    Points
    302
    Par défaut
    Hello,
    Pour les fonctionnalités que tu souhaites, je me demande si le c++ est le langage le plus approprié... Tu risque de te "trimballer" des libs assez volumineuses (genre wxWidget) pour n'en utiliser au final qu'1%. Certains langages plus "haut niveau" t'offre toutes ces fonctionnalités de base et ça prend généralement pas plus de quelques lignes (je pense notamment a python).
    ps : ne pas tenir compte du post si t'as pas le choix du langage

Discussions similaires

  1. [Lazarus] Lecture page web -> ok mais pas pour toutes les pages (?)
    Par ulysse_31 dans le forum Lazarus
    Réponses: 9
    Dernier message: 26/02/2013, 23h11
  2. lecture cellule excel dans page web
    Par smartbis dans le forum Langage
    Réponses: 1
    Dernier message: 22/05/2008, 10h07
  3. lecture d'une cellule excel pour affichage dans une page web
    Par smartbis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/05/2008, 09h33
  4. Ouverture et lecture d'une page web avec openStream()
    Par macinteuch dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 01/05/2008, 13h11

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