2010-12-20 23 views
9

我想用C++編寫一個幫助管理我的曲棍球池的程序,而我需要做的關鍵事情之一是讀取本週的時間表先。我希望能使用NHL網站。有什麼辦法讓程序爲給定的網址下載HTML文件,然後解析它?我想,一旦我有文件下載,簡單的文件I/O會做,但我不知道如何下載文件。如何從C++程序中獲取數據

+1

的[編程閱讀網頁(可能的複製https://stackoverflow.com/questions/389069/programmatically-reading-a -web-page) – user463035818 2017-07-20 20:12:48

回答

14

我會用一些提供Http抽象的庫。

例如:

cpp-netlib

#include <boost/network/protocol/http/client.hpp> 
#include <string> 
#include <iostream> 
int main() 
{ 
    boost::network::http::client client; 
    boost::network::http::client::request request("http://www.example.com"); 
    request << boost::network::header("Connection", "close"); 
    boost::network::http::client::response response = client.get(request); 

    std::cout << body(response); 
} 

我不認爲它可以得到比

在GNU/Linux更容易編譯:

g++ -I. -I$BOOST_ROOT -L$BOOST_ROOT/stage/lib -lboost_system -pthread my_main.cpp 

QHttp

示例這有可能會很長,因爲 QHTTP只能發送非阻塞請求(這意味着,你必須抓住一些信號報告該請求結束等)。 但文檔非常棒,所以它不應該是一個問題。 :)

+0

+1雖然這個庫還沒有被接受,但它看起來很優雅。 – AraK 2010-12-20 09:19:39

+0

+1,因爲它比libcurl多C++ ish。 – ybungalobill 2010-12-20 09:58:13

6

使用libcurl是一種選擇。 Here是一個使用C++將網頁內容作爲字符串下載的示例。

1

我終於成功地編譯和鏈接有:

g++ -I. -I/usr/include -lboost_thread -lboost_system 
    -lcppnetlib-client-connections -lcppnetlib-server-parsers 
    -lcppnetlib-uri -pthread main.cpp 
相關問題