【问题标题】:How to fetch specific number of lines from webpage using cURL (C/C++)如何使用 cURL (C/C++) 从网页中获取特定数量的行
【发布时间】:2025-12-06 17:20:05
【问题描述】:

我是 cURL 的新手,正在尝试实现一些应用程序,它可以允许用户从 HTML 页面(动态)获取特定数据并将其保存到 .txt

应用程序是基于 c/c++ 的,到目前为止我能够获取 HTML 页面的全部内容。

这是我引用的代码:-

#include "stdafx.h" 
#pragma comment(lib, "curllib_static.lib") 
#include "curl/curl.h" 
#pragma comment(lib, "wldap32.lib") 
#pragma comment(lib, "ws2_32.lib") 
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "ssleay32.lib") 
#pragma comment(lib, "openldap.lib") 
#pragma comment(lib, "libeay32.lib")

void get_page(const char* url, const char* file_name)
{
  CURL* easyhandle = curl_easy_init();
 // time = 100;
  curl_easy_setopt( easyhandle, CURLOPT_URL, url ) ;

  curl_easy_setopt (easyhandle, CURLOPT_CONNECTTIMEOUT, .29);

  FILE* file = fopen( "my.txt", "a+");

  curl_easy_setopt( easyhandle, CURLOPT_WRITEDATA, file) ;
//  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  curl_easy_perform( easyhandle );

  curl_easy_cleanup( easyhandle );
  fclose(file);

}

int main()
{
  get_page( "http:couldbeanything.com", "style.css" ) ;

  return 0;
}

所以,这段代码获取了整个页面,我只想获取一些使用它的特定行数(例如 - 5)

我搜索并发现了一个叫做“PHP dom parser”的东西,有没有办法在 C/C++ 中实现这种提取??

提前致谢

【问题讨论】:

    标签: c++ c curl libcurl


    【解决方案1】:

    这是一个不寻常的要求,没有 DOM 解析器可以帮助您。相反,您应该使用一些更高级的 curl 选项,而不是使用 CURLOPT_WRITEDATA 使用 CURLOPT_WRITEFUNCTION。像这样

    curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, my_function);
    
    ...
    
    size_t my_function(char *ptr, size_t size, size_t nmemb, void *userdata)
    {
        ...
    }
    

    my_function 是一个回调,当网页上有一些数据可用时,my_function 将被 curl 调用,ptr 指向可用数据,size 告诉你有多少数据元素可用,并且nmemb 告诉你每个数据元素的大小。然后你可以用这些数据做你想做的事。大概在您的情况下,这意味着提取前几行。

    但不能保证你会在一个方便的块中获得前几行(互联网不是这样工作的),所以你有一些工作要做。查看docs 了解更多信息。

    基本上,由于互联网不是“基于线路”的,没有简单的方法可以做你想做的事,我想知道你是否应该重新考虑你的要求。

    【讨论】: