【问题标题】:How can I fetch data from a website inside a C++ program如何从 C++ 程序中的网站获取数据
【发布时间】:2010-12-20 08:54:16
【问题描述】:

我想用 C++ 编写一个程序来帮助管理我的曲棍球池,而我需要做的关键事情之一就是阅读下一周的时间表。我希望使用 NHL 网站。有没有办法让程序下载给定 url 的 HTML 文件,然后解析它?我想一旦我下载了文件,简单的文件 I/O 就可以了,但我不确定如何下载文件。

【问题讨论】:

标签: c++


【解决方案1】:

我会使用一些提供 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 只能发送非阻塞请求(这意味着您必须捕获一些报告请求已完成的信号等)。 但是文档很棒,所以应该不是问题。 :)

【讨论】:

  • +1 虽然这个库还没有被接受,但是看起来很优雅。
  • @Palmik 是否有此更新版本,我收到编译器错误。
【解决方案2】:

使用libcurl 是一种选择。 Here 是使用 C++ 将网页内容下载为字符串的示例。

【讨论】:

    【解决方案3】:

    我终于设法编译并链接到:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 2021-08-29
      相关资源
      最近更新 更多