使用curl 下载HTML

简单的一个curl小例子:


#include <iostream>
#include <string>
#include <sstream>
#include <curl/curl.h>
#include <string.h>

#define BUF_SIZE 1024 * 100
using namespace std;

string DownloadString(char* url);
int main(int argc, const char* argv[]){

curl_global_init(CURL_GLOBAL_ALL);
cout <<DownloadString("http://www.baidu.com/");
cin.get();
curl_global_cleanup();
return 0;
}

int WriteData(char* in, size_t size, size_t nmemb, string* out){
out->append(in);
return size*nmemb;
}

string DownloadString(char* url){
string buffer;
string headerData;
CURL* conn;
curl_slist* header = NULL;
header = curl_slist_append(header, "Accept-Encoding: gzip, deflate");
header = curl_slist_append(header, "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; CIBA)");
header = curl_slist_append(header, "Connection: Keep-Alive");

conn = curl_easy_init();
curl_easy_setopt(conn, CURLoption::CURLOPT_URL, url);
curl_easy_setopt(conn, CURLoption::CURLOPT_HTTPHEADER, header);
curl_easy_setopt(conn, CURLoption::CURLOPT_ACCEPT_ENCODING, "gzip");
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEDATA, &buffer);
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEFUNCTION, WriteData);
curl_easy_setopt(conn, CURLoption::CURLOPT_WRITEHEADER, &headerData);

CURLcode code = curl_easy_perform(conn);
if (code != CURLcode::CURLE_OK)
return "";
curl_slist_free_all(header);
curl_easy_cleanup(conn);

istringstream istream(headerData.c_str());
string out;
bool isgzip = false;
while (istream.good())
{
getline(istream, out, ‘\n‘);
if (!out.empty()){
if (out.find("Content-Encoding") != out.npos && out.find("gzip") != out.npos){
isgzip = true;
}
}
}

///gzip
return buffer;
}

该例子通过curl下载百度首页html与响应头信息,并自动对gzip解码。

时间: 2024-10-09 14:47:19

使用curl 下载HTML的相关文章

php通过cURL下载网络上面的一个HTTPS的资源

<?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init(); // 初始化 curl_setopt($curlobj, CURLOPT_URL, "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");// 设置访问网页的URL curl_setopt($curlo

php使用curl下载指定大小的文件

php中使用基于libcurl的curl函数,可以对目标url发起http请求并获取返回的响应内容.通常的请求方式类似如下的代码: public function callFunction($url, $postData, $method, header='') {     $maxRetryTimes = 3;     $curl = curl_init();     /******初始化请求参数start******/     if(strtoupper($method) !== 'GET'

windows下使用curl下载ftp文件(ftp有密码)

curl下载地址:http://curl.haxx.se/download.html 如下是bat脚本--------- @echo off echo %date% set Now=%date:~0,4%%date:~5,2%%date:~8,2% echo %Now% set filename=abc-%Now%.zip echo %filename% echo curl.exe ftp://www.baidu.com:222/%filename% -u user:password -o c:

curl下载远程图片到服务器

<?php //curl下载远程图片到服务器 方法 function download($url, $path = 'images/'){ $ch = curl_init(); $names = mt_rand(100000,999999); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

15 shell之curl下载文件

前言 ????最近忙于离职的工作交接,有日子没学习了,懒惰啊! 正文 需求 譬如某一天我们做了一个软件. 有时我们的软件需要自动根据到网上去获取当前版本是否要更新.如果"网上"需要更新则下载一些必要的文件 shell实现 LOCAL_VER=`cat version` REMOTE_VER=`curl http://[email protected]@@..com/test/conf.txt -s | sed -n '2p'` # -s 静默模式,不显示细节 #echo $REMOTE

linux curl 下载jdk

进入orecle官网,找到需要的安装包 需要cookie同意相关协议才能下载 curl -L "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.rpm" -H "Cookie: oraclelicense=accept-securebackup-cookie"  -H "Connection: keep-alive" -O

curl下载文件

有时候需要在简单的脚本中实现下载,就可以用用这个小工具实现 curl官网:https://curl.haxx.se/ 选择适合的版本下载后,启动cmd,进入curl所在目录,运行 curl -O [URL] 就能在当前文件夹下载文件,注意这里的URL必须对应具体的文件 如果想保存目标网页,可以用 curl -o [filename] [URL] 例如, curl -o qq.html http://www.qq.com/ 就能保存腾讯首页.(-o参数也可以用在下载文件里面,作用是重命名下载的文件

wget和curl下载JDK

有时候我们需要在服务器上安装Oracle JDK,这时候我们发现直接复制网页上面的地址是不能下载的 以下载jdk-8u101-linux-i586.tar.gz为例,右键查看到的地址为http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-i586.tar.gz,但是这个地址并不能直接下载 通过浏览器开发工具观察我们发现,下载时经过了3次重定向才拿到最终的下载地址,并且Cookies中有个参数必须带上 将这几个3

通过curl下载文件

1. 适用范围      本文档介绍SylixOS下通过curl中间下载文件的流程,使用者应熟悉SylixOS系统以及curl中间件. 2. 下载流程2.1 资源准备    文件下载依赖curl中间件,故下载前需基于SylixOS进行curl中间件移植,移植过程本文档不做详细介绍,请参照<SylixOS下中间件移植手册>. 2.2 下载流程      文件下载前需获取可用的下载url,使用curl中间件提供的接口进行文件下载.下载流程如程序清单 2.1所示. 程序清单 2.1  文件下载流程