Tester l'existence d'un texte dans un site en C++

Moberateur Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour!

Je reprend un projet en c++ qui fonctionne, et voudrais lui faire tester l'existence d'un texte dans un site (dans une page ex: http://www.site.x/page.php) avant son exécution.
Je ne sais pas vraiment comment m'y prendre alors si vous pouvez me mettre sur la voie je vous en serez reconnaissant.
Merci

1 réponse

  1. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
     
    Bonjour,
    C'est faisable assez simplement en utilisant la libcurl https://curl.haxx.se/download.html je ne sais pas si c'est compatible avec le c++ sans quoi il y a curlpp https://code.google.com/archive/p/curlpp/downloads pas testé

    Petit code en C qui sortira un "meuuuuh" à chaque fois qu'il trouvera la chaîne recherchée dans une page web :
    #include <stdio.h>
    #include <curl/curl.h>
    
    size_t function(char *ptr,size_t size,size_t n,void *userdata){
        int i,j;
        char *cherche_mot=(char*)userdata;
        for(i=0;i<size*n;i++){
            for(j=0;cherche_mot[j]&&cherche_mot[j]==ptr[i+j];j++);
            if(cherche_mot[j]=='\0') printf("meuuuuh\n");
        }
        return n;
    }
    
    int main(void){
        char *url="https://www.commentcamarche.net/";
        char *userdata="Actualit& eacute;"; /* chaîne recherchée : "Actualités" supprimez l'espace que j'ai mis entre le & et e */
        CURL *curl;
        CURLcode res;
        curl=curl_easy_init();
        if(curl){
            curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,&function);
            curl_easy_setopt(curl,CURLOPT_WRITEDATA,userdata);
            curl_easy_setopt(curl,CURLOPT_URL,url);
            res=curl_easy_perform(curl);
    
            if(res==0) fprintf(stderr,"\nok\n");
            else fprintf(stderr,"\nerreur\n");
    
            curl_easy_cleanup(curl);
        }
        return 0;
    }
    0