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.
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.
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.
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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é...
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
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.
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 :
puis tu rajoutes un composant TMemo ( qui est une sorte de notepad ) qui va servir à stocker le code source de page web
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; } //---------------------------------------------------------------------------
ensuite dans le timer tu colles le code suivant :
avec Decode() ta fonction qui va aller chercher l'information que tu veux dans la page web.
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();
Et le tour est joué !
Rajoute quand même un TBouton pour pouvoir lancer la lecture de ta page 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.
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); }
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
Merci, je vais y jeter un oeil
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager