#define CURL_STATICLIB #include #include #pragma comment(lib, "libcurl.lib") #pragma comment(lib, "Ws2_32.lib") #pragma comment(lib, "Wldap32.lib") #pragma comment(lib, "advapi32.lib") // CURLのコールバック関数 size_t write_callback_func(void* ptr, size_t size, size_t nmemb, FILE* stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); return written; } // リンカー設定を調整するために、/NODEFAULTLIB:MSVCRT を使用します #pragma comment(linker, "/NODEFAULTLIB:MSVCRT") int main(void) { CURL* curl; FILE* fp; CURLcode res; const char* url = "http://www.chiseki.go.jp/"; // スクレイピングするサイトのURLを入力 const char* outfile = "output.html"; // 出力ファイル名を指定 fopen_s(&fp, outfile, "wb"); if (fp == NULL) { fprintf(stderr, "ファイルを開けませんでした\n"); return 1; } curl_global_init(CURL_GLOBAL_ALL); // CURLのグローバル初期化 curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_func); 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); fclose(fp); } curl_global_cleanup(); // CURLのグローバルクリーンアップ return 0; }