0

ページを .xml として保存するとき、またはページのソースを表示するときに、インターネット ブラウザーが行うのと同じ方法です。もちろん、私は xml にあり、次のように始まる Web ページをターゲットにしています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

なぜ私はこれをしたいのですか?特定のWebページのソース全体を文字列またはCStringにダンプしたいのですが、これはまだ方法を考え出しています

4

2 に答える 2

2

Visual C++ について言及されたので、C++11 も使用できるのであれば、Microsoft Research から最近公開された HTTP Casablanca ライブラリを使用することをお勧めします。

http://msdn.microsoft.com/en-us/devlabs/casablanca.aspx

このチュートリアル http://msdn.microsoft.com/en-US/devlabs/hh977106.aspxで説明されているものと同様の HTTP クライアントを使用する必要があります。

これは次のようなものです。

http_client client( L"http://somewebsite.com" );

client.request( methods::GET, L"page-to-download.html" )
    .then( []( http_response response ) {
        cout << "HTML SOURCE:" << endl << response.to_string() << endl; })
    .wait();
于 2012-07-31T09:04:16.213 に答える
1

libcurl の使用:

size_t AppendDataToStringCurlCallback(void *ptr, size_t size, size_t nmemb, void *vstring)
{
    std::string * pstring = (std::string*)vstring;
    pstring->append((char*)ptr, size * nmemb);
    return size * nmemb;
}

std::string DownloadUrlAsString(const std::string & url)
{
    std::string body;

    CURL *curl_handle;
    curl_global_init(CURL_GLOBAL_ALL);
    curl_handle = curl_easy_init();
    curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, AppendDataToStringCurlCallback);
    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, &body);
    curl_easy_perform(curl_handle); 
    curl_easy_cleanup(curl_handle);

    return body;
}
于 2012-07-31T08:45:50.053 に答える