C++:
Webseite herunterladen
How to:
Hier ist ein einfaches Beispiel mit C++
und libcurl
, einer leistungsfähigen Bibliothek für Client-seitige URL-Transfers.
#include <iostream>
#include <curl/curl.h>
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
std::cout << readBuffer << std::endl;
}
return 0;
}
Wenn alles klappt, siehst du den HTML-Inhalt von http://example.com
.
Deep Dive:
Anfangs waren die Werkzeuge zum Herunterladen von Webseiten limitiert. libcurl
wurde 1997 veröffentlicht und hat sich seitdem als robuste und vielseitige Bibliothek etabliert. Alternativ könnten Programmierer auch Sprachen wie Python verwenden oder Tools wie wget
oder curl
in einem Terminal. Die Herausforderung bei C++ ist die Fehlerbehandlung und die Notwendigkeit für eine externe Bibliothek, da Standard-C++ keine eingebauten HTTP-Handling-Funktionen hat.