2010-12-06 17 views
2

私はあなたに私をあまりにも嫌がることはないが、これはかなり簡単に誰かが答えることができるはずです。私はウェブサイト上のファイルを文字列に読み込みたいので、そこから情報を抽出することができます。HTMLソースを文字列に読み取る

HTMLソースを文字列に読み込むだけの簡単な方法が必要です。何時間も見て回った後、私はこれらの図書館やカールを見ています。私が必要とするのは生のHTMLデータだけです。私は明確な答えは必要ない。私の検索を洗練させるのに役立つもの。

ちょうど私が私が操作できる文字列の生のコードをしたい明確にするために、任意の解析を必要としないなど

+0

を使用するので、あなたはこのC++タグ付けされています。あなたがそれらを解析せずにWebページを取得したい場合、あなたが探しているのはHTTPクライアントライブラリです。あなたが "html"をあなたの検索と無関係であると解釈したくないので、 "html"を探すべきではありません。 –

答えて

3

HTTPはTCPの上に構築されています。ソケットプログラミングを知っているなら、目的のサーバーへのソケットを開き、HTTP GETコマンドを発行する単純なネットワーキングアプリケーションを書くことができます。サーバーが応答しても、実際の文書に先行するHTTPヘッダーを削除する必要があります。

これが複雑な場合は、libcurlを使用してください。

+0

私は@chrisaycockに同意します。あなたの最良の選択肢はおそらく、良いlibcurlの例を見つけてそれに付随することでしょう。 – wajiw

1

ハッキングの場合は、ソースを表示ソースから取得し、txtとして保存してください。通常のファイルioストリームで開くことができます。あなたがしたいすべてが全体のHTMLコードをつかむの場合

  • すべてTHOS厄介なライブラリが
0

:) ...それは右のそれを行うための一般的な非自明な運動していることを暗示していますどんな種類の解析やexternライブラリもなく、私の甘えはコードをIOストリームで文字列にコピーすることでしょう。

私が心に留めている最も簡単な方法ですが、最も効果的な方法ではないことに注意してください。

6

HTTPクライアントライブラリが必要です。多くのクライアントの1つはlibcurlです。 GETリクエストをURLに発行し、選択したライブラリがどのようにそれを提供しているかを返信します。

ここにはがあります。これはC言語に対応していますので、うまくいきます。

#include <stdio.h> 
#include <curl/curl.h> 

int main(void) 
{ 
    CURL *curl; 
    CURLcode res; 

    curl = curl_easy_init(); 
    if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); 
    res = curl_easy_perform(curl); 

    /* always cleanup */ 
    curl_easy_cleanup(curl); 
    } 
    return 0; 
} 

しかし、あなたはlibcurlのためのC++ラッパーをしたい場合、あなたは間違った事を探しているので、あなたの検索が機能していないcurlpp

#include <curlpp/curlpp.hpp> 
#include <curlpp/Easy.hpp> 
#include <curlpp/Options.hpp> 

using namespace curlpp::options; 

int main(int, char **) 
{ 
    try 
    { 
    // That's all that is needed to do cleanup of used resources 
    curlpp::Cleanup myCleanup; 

    // Our request to be sent. 
    curlpp::Easy myRequest; 

    // Set the URL. 
    myRequest.setOpt<Url>("http://example.com"); 

    // Send request and get a result. 
    // By default the result goes to standard output. 
    myRequest.perform(); 
    } 

    catch(curlpp::RuntimeError & e) 
    { 
    std::cout << e.what() << std::endl; 
    } 

    catch(curlpp::LogicError & e) 
    { 
    std::cout << e.what() << std::endl; 
    } 

    return 0; 
}