たった 20 行のコードでひたすらアイドル水着画像をあつめる(C++ + cpp-netlib だよ)

これの cpp-netlib 版です。


最新版だとヘッダーオンリーで使えないっぽいのでライブラリをビルドしてリンクする必要があります。

[ソース]

#include <boost/network.hpp>
#include <boost/xpressive/xpressive.hpp>
#include <iostream>

int
main(){
    namespace http = boost::network::http;
    std::string body = http::body(http::client().get(http::client::request("http://matome.naver.jp//odai/2135350364969742801")));

    auto chars = +(~boost::xpressive::as_xpr('>'));
    boost::xpressive::sregex token = "<img src=" >> chars  >> "class=\"MTMItemThumb\"" >> chars >> "/>";
    std::for_each(
        boost::xpressive::sregex_iterator(std::begin(body), std::end(body), token),
        boost::xpressive::sregex_iterator(),
        [](boost::xpressive::smatch const& what){
            std::cout << what[0] << std::endl;
        }
    );
    return 0;
}


パース周りはそのままですが、通信周りがだいぶスッキリ。
この手の処理が C++ で楽に書けるようになるといいですね。