gpt4 book ai didi

c++ - 如何使用 cURL (C/C++) 从网页中获取特定行数

转载 作者:行者123 更新时间:2023-11-28 07:25:23 25 4
gpt4 key购买 nike

我是 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 解析器”的东西,有没有什么方法可以在 C/C++ 中实现这种获取??

提前致谢

最佳答案

这是一个不寻常的要求,没有任何 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 指向可用的data,size 告诉您有多少数据元素可用,nmemb 告诉您每个数据元素的大小。然后你可以用这些数据做你想做的事。大概在您的情况下,这意味着提取前几行。

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

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

关于c++ - 如何使用 cURL (C/C++) 从网页中获取特定行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com