2010-12-20 10 views
9

Quiero escribir un programa en C++ que me ayude a administrar mi grupo de hockey, y una de las cosas clave que tendré que hacer es leer el calendario de la semana adelante. Esperaba usar el sitio web NHL. ¿Hay alguna forma de que el programa descargue el archivo HTML de una url determinada y luego analizarlo? Supongo que una vez que haya descargado el archivo, Simple I/O lo haría, pero no estoy seguro de cómo descargar el archivo.Cómo puedo obtener datos de un sitio web dentro de un programa en C++

+1

Posible duplicado de [programación de leer una página web] (https://stackoverflow.com/questions/389069/programmatically-reading-a -web-page) – user463035818

Respuesta

14

Utilizaría alguna biblioteca que proporcione abstracción Http.

Por ejemplo:

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); 
} 

No creo que se puede conseguir mucho más fácil de lo que

en GNU/Linux compilar con:

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

QHttp

ejemplo de esto podría llegar a ser muy larga, ya que QHttp puede enviar sólo las solicitudes no bloqueantes (es decir, que tiene que coger algunas señales que indican que un pedido se terminó, etc.). Pero la documentación es excelente, por lo que no debería ser un problema. :)

+0

+1 Aunque esta biblioteca aún no se ha aceptado, parece elegante. – AraK

+0

+1 porque es más C++ ish que libcurl. – ybungalobill

6

Usar libcurl es una opción. Here es un ejemplo de usarlo con C++ para descargar los contenidos de una página web como una cadena.

1

que finalmente lograron compilar y enlazar con:

g++ -I. -I/usr/include -lboost_thread -lboost_system 
    -lcppnetlib-client-connections -lcppnetlib-server-parsers 
    -lcppnetlib-uri -pthread main.cpp 
Cuestiones relacionadas