Bonjour
je souhaite recuperer le contenu d'une page web
directement dans un buffer avec libcurl.
Dois je downloader obligatoirement la page web d'abord dans un fichier ?
Merci.
Bonjour
je souhaite recuperer le contenu d'une page web
directement dans un buffer avec libcurl.
Dois je downloader obligatoirement la page web d'abord dans un fichier ?
Merci.
Je relance ce topic, je cherche aussi à récupérer le code source d'une page HTML quelconque sur le net pour ensuite réaliser un travail extérieur dessus (Surtout du parsing), grâce à la librairie Libcurl.
Est-ce possible, sinon y'a t'il d'autre moyens ?
A+
Bon, après des heures de recherches, j'ai enfin trouver le bout de code qui permet de récupérer le code source d'une page web avec Libcurl.
Ceci ce fait avec la fonction curl_easy_perform, le seul problème, c'est que cette fonction me retourne le code source de la page web dans ma variable et l'affiche automatiquement sur mon Terminale, j'ai tenté de faire un printf, mais impossible car apparement sa n'est pas un char* mais un type propre à une structure de la lib. Quelqu'un peux t-il m'éclaircir la dessus ?
A+
Voici le code source :
Comme déjà dit, si on essaye un printf de la variable code (là ou se tient le code source la page web), on obtient cette erreur de compilation :
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 int main(void) { CURL *curl; CURLcode code; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.developpez.net"); code = curl_easy_perform(curl); curl_easy_cleanup(curl); } system("pause"); return 0; }
16 C:\Users\Documents\Test_LibCurl\main.cpp cannot convert `CURLcode' to `const char*' for argument `1' to `int printf(const char*, ...)'
Je reviens sur ce post pour dire qu'en réalité ce code ne récupère pas vraiment le code source, enfaite c'est un transfert du code source de la page web, sa reste visuel au niveau du terminal donc pas moyen de travailler dessus.
Je cherche encore...
Comme Libcurl ne propose qu'un simple transfert du code source de la page Internet vers votre terminale, j'ai codé une fonction, qui va récupérer la page html et rapatrier cette page comme un fichier HTML sur votre disque dur, ensuite un ptit open + read et le tour est jouer.
Voici le code de ma fonction, je suis ouvert à toutes remarques :
Le buf en tableau de char est provisoire (je test), il va falloir trouver un moyen pour récupérer la taille du fichier uploader et malloc une chaîne de caractère en fonction de la taille du fichier, j'ai pensé à stat.
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 #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <sys/stat.h> #include <curl/curl.h> int main(void) { int fd; char buf[10000]; CURL *handle = curl_easy_init(); curl_easy_setopt(handle, CURLOPT_URL, "http://annonces.ebay.fr/"); FILE * fp = fopen("test.html", "w"); curl_easy_setopt(handle, CURLOPT_WRITEDATA, fp); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, fwrite); curl_easy_perform(handle); fclose(fp); curl_easy_cleanup(handle); fd = open("test.html", O_RDONLY); if (fd == -1) { printf("Cannot open HTML file !\n"); exit(0); } read(fd, buf, 10000); printf(buf); system("pause"); return 0; }
Mais au finale on à bien ce que l'on voulais : Récupérer le code source d'une page web pour travailler dessus.
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