C++用libcurl库GET网页(比如baidu.com)并将获取到的网页内容保存到本地文件夹中

C++用libcurl库GET网页(比如baidu.com)并将获取到的网页内容保存到本地文件夹中,第1张

#include <io.h>

#include "curl/curl.h"

#pragma comment(lib, "ws2_32.lib")

#pragma comment ( lib, "libcurl.lib" )

#pragma comment ( lib, "ws2_32.lib" )

#pragma comment ( lib, "winmm.lib" )

#pragma comment ( lib, "wldap32.lib" )

//这是libcurl接收数据的回调函数,相当于recv的死循环

//其中stream可以自定义数据类型,这里我传入的是文件保存路径

static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream )

{

int len = size * nmemb

int written = len

FILE *fp = NULL

if ( access( (char*)stream, 0 ) == -1 )

{

fp = fopen( (char*) stream, "wb" )

}

else

{

fp = fopen( (char*) stream, "ab" )

}

if (fp)

{

fwrite( ptr, size, nmemb, fp )

}

return written

}

int GetUrl( const char *url, char *savepath )

{

CURL *curl

CURLcode res

struct curl_slist *chunk = NULL

curl = curl_easy_init()

if ( curl ) {

curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L )

curl_easy_setopt( curl, CURLOPT_URL, url )

//指定回调函数

curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback)

//这个变量可作为接收或传递数据的作用

curl_easy_setopt( curl, CURLOPT_WRITEDATA, savepath )

res = curl_easy_perform( curl )

if (res == CURLE_OK)

{

return 1

}

return 0

}

}

int main( void )

{

if ( GetUrl( "t.sina.com.cn", "c:/1.txt" ) )

{

printf( "OK" )

}

return 0

}

1. 检查网络

2. 输入关键字,拼接地址字符串,发送请求

3. 分析获取的结果(对字符串的处理),插入到数据库。

第一步骤参考:http://blog.csdn.net/yoyoch1/archive/2009/08/02/4401960.aspx

第二步骤参考: MSDN :WebClient 这个类

第三步骤略


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9715520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存