C++:
Hämta en webbsida
Så här gör du:
För att ladda ner en webbsida i C++ kan vi använda biblioteket cURL. Först måste du se till att cURL är installerat och länkat till ditt projekt.
#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);
curl_easy_cleanup(curl);
if(res == CURLE_OK) {
std::cout << readBuffer << std::endl;
}
}
return 0;
}
Kör programmet. Om allt är som det ska bör du se webbsidans HTML i konsolen.
Fördjupning:
Tidigare använde många programmerare sockets och lågnivå-nätverksbibliotek för att ladda ner webbdata. cURL biblioteket är nu standard; det hanterar URL-syntax, protokoll och till och med SSL-certifikat transparent.
Alternativ till cURL inkluderar andra bibliotek som libwww eller högnivå C++ bibliotek som Boost.Beast, vilket också kan använda moderna C++ funktioner och asynkrona begärningar.
När du implementerar en nedladdning är det viktigt att hantera fel korrekt och respektera webbserverns ev. begränsningar, såsom att respektera robots.txt
.
Se även:
- cURL: https://curl.se/
- libcurl C++ wrapper-dokumentation: https://curl.se/libcurl/cplusplus/
- Boost.Beast GitHub-sida: https://github.com/boostorg/beast
- HTTP-protokollets specifikationer: https://www.ietf.org/rfc/rfc2616.txt