libcurl库
A.在windows环境下编译libcurl库
Download Microsoft Platform SDK
========================================================
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Install it
Download Zlib Source
========================================================
from http://www.zlib.net/
http://www.zlib.net/zlib123.zip
Build Zlib
========================================================
Use Visual C++ 6
zlib123/projects/visualc6/zlib.dsw
Download Openssl Source
========================================================
from http://www.openssl.org/source/
http://www.openssl.org/source/openssl-0.9.8g.tar.gz
Build Openssl
========================================================
maybe need to install active perl
http://lccnc.skycn.com/down/ActivePerl-5.8.8.822-MSWin32-x86-280952.zip
# run build shell
cd openssl-***
ms/32all.bat
Download Curl Source
========================================================
from http://curl.haxx.se/
http://curl.haxx.se/download/curl-7.18.1.zip
Build Curl
========================================================
1. Pre Build
a. create bat file for debug
call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"
set CFG=debug-dll-ssl-dll-zlib-dll
set OPENSSL_PATH=D:/svn_work/MDS/USS/trunk/openssl-0.9.8g
set ZLIB_PATH=D:/svn_work/MDS/USS/trunk/zlib123-dll
nmake -f Makefile.vc6
b. create bat file for release
call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"
set CFG=release-dll-ssl-dll-zlib-dll
set OPENSSL_PATH=D:/svn_work/MDS/USS/trunk/openssl-0.9.8g
set ZLIB_PATH=D:/svn_work/MDS/USS/trunk/zlib123
nmake -f Makefile.vc6
c. save shell code to bat file
Save to : curl-***/lib/build.bat
d. modify curl-***/lib/Makefile.vc6
Find
CFLAGS = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
set as
CFLAGS = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL /I"C:/Program Files/Microsoft Platform SDK/Include"
e. copy zlib123/projects/visualc6/Win32_DLL_Release/zlib1.lib to curl-7.18.1/lib/zdll.lib
2. Build
cd curl-***/lib
build.bat
在Windows下使用libcurl、curlpp
<!--[if !vml]--><!--[endif]-->
1. 下载libcurl、curlpp源代码 http://rrette.com/textpattern/index.php?s=cURLpp 例如下载 http://curl.haxx.se/download/curl-7.16.2.tar.bz2 http://rrette.com/files/curlpp/curlpp-0.7/curlpp-0.7.0.tar.gz
2. 下载zlib 例如下载 http://www.zlib.net/zlib123-dll.zip
3. 编译OpenSSL 参考Windows下Openssl安装以及编程(Visual C++版)
4. 编译libcurl,以VS2005为例 将curl-7.16.2.tar.bz2解压到某目录,例如C:/curl,进入C:/curl/lib目录。 将zlib123-dll.zip解压到某目录,例如C:/zlib 设Openssl的目录为C:/openssl
进入Visual Studio 2005命令提示,进入C:/curl/lib
( copy zlib-1.2.4/projects/visualc6/Win32_DLL_Release/zlib1.lib to curl-7.20.0.gz/lib/zdll.lib
curl-7.20.0.gz/lib>perl Configure VC-WIN32
curl-7.20.0.gz/lib>"D:/Program Files/Microsoft Visual Studi
编译Debug版本。 set CFG=debug-dll-ssl-dll-zlib-dll set OPENSSL_PATH=C:/openssl set ZLIB_PATH=C:/zlib/include nmake -f Makefile.vc6
其输出:libcurld_imp.lib, libcurld.dll
编译Release版本。 set CFG=release-dll-ssl-dll-zlib-dll set OPENSSL_PATH=C:/openssl set ZLIB_PATH=C:/zlib/include nmake -f Makefile.vc6 其输出:libcurl_imp.lib, libcurl.dll 如果需要编译其他版本,可查看设定相应的CFG 参数即可。
5.编译curlpp 将curlpp-0.7.0.tar.gz解压到某目录,例如C:/curlpp/curlpp set CFG=release nmake -f Makefile.msvc 如果需要编译其他版本,可查看设定相应的CFG 参数即可。
需要注意的是可能需要对原文件进行一定的修改。 一种方案是: 修改Makefile.msvc中LIBCURL_PATH 修改dllfct.h关于CURLPPAPI的宏定义 #define CURLPPAPI
6.测试 该程序是备份CUBlog程序的C++版,需要boost库
|
HTTP/FTP客户端开发库:libwww、libcurl、libfetch 以及更多
网页抓取和ftp访问是目前很常见的一个应用需要,无论是搜索引擎的爬虫,分析程序,资源获取程序,WebService等等都是需要的,自己开发抓取库 当然是最好了,不过开发需要时间和周期,使用现有的Open source程序是个更好的选择,一来别人已经写的很好了,就近考验,二来自己使用起来非常快速,三来自己还能够学习一下别人程序的优点。
闲来无事,在网上浏览,就发现了这些好东西,特别抄来分享分享。主要就是libwww、libcurl、libfetch 这三个库,当然,还有一些其他很多更优秀库,文章后面会有简单的介绍。
【libwww】
官方网站:http://www.w3.org/Library/
更多信息:http://www.w3.org/Library/User/
运行平台:Unix/Linux,Windows
以下资料来源:http://9.douban.com/site/entry/15448100/,http://zh.wikipedia.org/wiki/Libwww
简介:
Libwww 是一个高度模组化用户端的网页存取API ,用C语言写成,可在 Unix 和 Windows 上运行。 It can be used for both large and small applications including: browsers/editors, robots and batch tools. There are pluggable modules provided with Libwww which include complete HTTP/1.1 with caching, pipelining, POST, Digest Authentication, deflate, etc. The purpose of libwww is to serve as a testbed for protocol experiments. 蒂姆·伯纳斯-李 在 1992 年十一月创造出了 Libwww,用於展示网际网路的潜能。使用 Libwww 的应用程式,如被广泛使用的命令列文字浏览器 Lynx 及 Mosaic web browser 即是用 Libwww 所写成的。 Libwww 目前为一开放原始码程式,并於日前移至 W3C 管理。基於其为开放原始码的特性,任何人都能为 Libwww 付出一点心力,这也确保了 Libwww 能一直进步,成为更有用的软体。
操作示例:
最近我需要写点页面分析的东西,这些东西某些程度上类似搜索引擎的“爬虫->parser->存储”的过程。
过去我常用的抓取页面的库是libcurl,这个东西是unix常用命令curl的基础,curl被称做“命令行浏览器”,功能强大,支持的协议也全面。遗憾的是libcurl仅仅是个支持多协议的抓取库,不能做解析。
找来找去,发现了w3c的Libwww库,这东西功能强大的吓人,不仅有解析,还有robot(也就是爬虫了,或是叫internet walker)功能。在Libwww基础上完成的程序很多,最著名的大概是字符模式的浏览器lynx。我几乎就觉得这就我需要的东西了,立刻dive into。
一整天之后,我终于能用这东西抓下来页面,并且从html页面中分析出来一些信息了,但是想更进一步就变的异常困难。因为这个库功能太复杂了。这东 西文档不详细,被人提及的也少。Libwww最近的Release 5.3.2,发布于2000年12月20日。一个有这么多年历史的东西,竟然没多少开发者在讨论,非常不正常。
找来找去,最后在libcurl的FAQ里面看到了和Libwww的比较, 精选的读者来信告诉我,不仅仅是我一个人被Libwww的复杂弄的晕了头脑,我才花了一整天,写信的那个哥们竟然用了一人月,还是在里面打转,直到换了 curl才好。虽然这是libcurl推销自己的方法,不过这些失败的前辈的经验让我对自己的智商重新有了信心。看来这东西没多少人讨论是正常的...
好吧,我也投降,libcurl没html解析功能,这没关系,我找别的办法好了...这么复杂的库,再好我也实在没办法忍受下去了,再说我需要的功能其实也真没Libwww那么复杂的。
写程序其实很容易迷失,你会看到一个似乎很完美,什么都能做的东西,一下子就喜欢上它,但是最后往往还是无福消受。往往是那些,不那么成熟,多少有点小毛病的库,组合在一起才是真正的解决方案。
【libcurl】
官方网站:http://curl.haxx.se/libcurl
更多特点:http://curl.haxx.se/docs/features.html
运行平台:Unix/Linux,Windows(Windows上貌似也有实现)
以下资料来源:http://blog.csdn.net/hwz119/archive/2007/04/29/1591920.aspx
Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持Windows,Unix,Linux等,线程安全,支持Ipv6。并且易于使用。
从http://curl.haxx.se/libcurl/ 下载一个稳定的版本,注意选择OS。
编译libcurl
下载下来的是源码包,需要编译。
解压zip文件,进入curl-7.14.0/lib目录(我下载的是7.14.0)。
编译Debug版本。新建一个批处理bat文件,如buildDebug.bat,内容如下:
call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"
set CFG=debug-dll-ssl-dll-zlib-dll
set OPENSSL_PATH=E:/SSL/openssl-0.9.7e
set ZLIB_PATH=E:/zip/zlib123
nmake -f Makefile.vc6
其输出:libcurld_imp.lib, libcurld.dll
编译Release版本。新建一个批处理文件BuildRelease.bat,内容如下:
call "C:/Program Files/Microsoft Visual Studio/VC98/Bin/vcvars32.bat"
set CFG=release-dll-ssl-dll-zlib-dll
set OPENSSL_PATH=E:/SSL/openssl-0.9.7e
set ZLIB_PATH=E:/zip/zlib123
nmake -f Makefile.vc6
其输出:libcurl_imp.lib, libcurl.dll
上面编译的是libcurl的 dll,使用OpenSSL Dll版本和Zlib Dll版本。如果没有,可以从www.openssl.org 或者http://www.zlib.net/ 下载。
如果需要编译其他版本,可查看Makefile.vc6,设定相应的CFG 参数即可。
商业软件使用libcurl时,只需要包含其copywrite声明即可。
Sample
#include <stdio.h>
#include "../curl-7.14.0/include/curl/curl.h"
#pragma comment(lib, "../curl-7.14.0/lib/libcurl_imp.lib")
int main(void)
{
curl = curl_easy_init();
if(curl) {
CURLcode res;
res = curl_easy_setopt(curl, CURLOPT_PROXY, "Test-pxy08:8080");
res = curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
res = curl_easy_setopt(curl, CURLOPT_URL, "http://www.vckbase.com");
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/**//* ask for the content-type */
/**//* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
printf("We received Content-Type: %s ", ct);
}
/**//* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}