您的位置:首页 > 其它

libcurl保存网页内容以及图片

2010-12-12 14:16 309 查看
最近一直在学习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来实现待继续测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐