ウェブページのダウンロード

C++:
ウェブページのダウンロード

How to / 方法

C++でウェブページをダウンロードするには、ライブラリを使います。ここではcpr(C++ Requests, Python Requestsライブラリに着想を得たもの)を使用します。cprはシンプルかつ現代的なAPIを提供します。

依存関係(cprライブラリ)をインストールします。

vcpkg install cpr

サンプルコード:

#include <cpr/cpr.h>
#include <iostream>

int main() {
    cpr::Response r = cpr::Get(cpr::Url{"http://httpbin.org/html"});
    if (r.status_code == 200) { // HTTP 200 OK
        std::cout << r.text << std::endl;  // r.text contains the webpage content
    } else {
        std::cout << "Failed to retrieve web page." << std::endl;
    }
    return 0;
}

実行結果:

<!DOCTYPE html>
<html>
<body>
<h1>Herman Melville - Moby-Dick</h1>
...
</body>
</html>

エラーハンドリングは省略していますが、実際のプロジェクトでは必要です。

Deep Dive / 掘り下げ

WebページダウンロードはHTTPプロトコルで行われます。過去にはlibcurlBoost.Beastのような低レベルのライブラリが使われていました。だが、cprのような新しいライブラリはもっと簡単にHTTPリクエストを扱えるようになっています。

cprはバックエンドでlibcurlを使用していますが、使用者には簡潔なインターフェースを提供します。このような抽象化により、プログラマはネットワーク通信の複雑さを意識することなく、コードを書くことができます。

別の手段を使うこともできます。例えば、標準C++ライブラリだけでHTTP通信を実装することも可能ですが、多くのボイラープレートコードを必要とし、エラー処理が複雑になります。適切なツールやライブラリを選ぶことで、効率的かつ安全に作業できます。

See Also / 関連リンク