libcurl保存网页内容以及图片

来源:互联网 发布:重庆市行知学校收费 编辑:程序博客网 时间:2024/05/18 03:41

最近一直在学习linux下使用libcurl,网络上很多朋友有比较详细的使用方法,下面是本人经过测试的功能函数,主要是能高保存网页源码,相当于我们点击查看->源码 所看到的内容。首先介绍一下libcurl的使用吧。

首先必须要安装libcurl开发环境(有时候吧这些环境手工引用也行)。获取和安装 libcurl 非常简单,取决于您所运行的 Linux 发行版。如果运行的是 Ubuntu,您可以使用 apt-get轻松安装这些包。以下行演示了如何为 libcurl 安装 libcurl:

$ sudo apt-get install libcurl3

完成之后在安装curl:

sudo apt-get install curl

安装curl开发环境:

sudo apt-get install libcurl4-gnutls-dev

 

 

下面开始介绍一下使用。

 

#include <curl/curl.h>//使用curl获取internet的curl源码内容 安装开发包sudo apt-get install libcurl4-gnutls-dev
#include <curl/types.h>
#include <curl/easy.h>
#include <memory>
#include <string>
#include <sys/sysinfo.h>
#include <sys/statfs.h>
#include <sys/statvfs.h>
#include <sys/vfs.h>
#include <fcntl.h>
#include <utmp.h>
#include <mntent.h>

 

//回调函数,这个函数是为了符合CURLOPT_WRITEFUNCTION, 而构造的

 

size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)

{

int written = fwrite(ptr, size, nmemb, (FILE *)fp);

return written;

 

}

 

 

int main(int argc, char *argv[])

{

CURL *curl;

 

curl_global_init(CURL_GLOBAL_ALL);

curl=curl_easy_init();

curl_easy_setopt(curl, CURLOPT_URL, argv[1]); //如argv[1] = "www.ihep.ac.cn"

 

char cFileName[128]={0};

sprintf(cFileName,"%s.txt",argv[1]);

 

if((fp=fopen(cFileName,"w"))==NULL) {

curl_easy_cleanup(curl);

return -1;

}

 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); //CURLOPT_WRITEFUNCTION 将后继动作交给write_data函数处理

curl_easy_perform(curl);

curl_easy_cleanup(curl);

return 1;

}

 

 

 

以上简单的源码即可实现保存网页的源码内容,现在还有个问题,如何将网页中出现的图片保存下来呢?有的朋友介绍个用网页爬虫爬取,这是比较复制的方案,如何用libcurl来实现待继续测试。

 

原创粉丝点击