1.先来一个简单的案例,请求http协议的网站

// 初始化一个 cURL 对象
$curl = curl_init(); // 设置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://www.hao123.com'); // 设置header
//是否把被访问服务器的头信息显示出来, 0不显示,非0显示
curl_setopt($curl, CURLOPT_HEADER, 0); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上, 0为直接输出屏幕,非0则不输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 运行cURL,请求网页
$data = curl_exec($curl); // 关闭URL请求
curl_close($curl); // 显示获得的数据
var_dump($data);
2.请求https协议网站,并发送数据(get)

$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxfefd7eaa357a57cf&secret=e061b4df1183fb203e2dc38d35b6a633';
//$url = 'http://localhost/wx/xx.php';
$curl = curl_init($url); // 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 ); // 从证书中检查SSL加密算法是否存在
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 2 ); //如果访问的url有发送跳转请求,将继续获取跳转后网址的内容
curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 ); // 设置超时限制防止死循环
curl_setopt ($curl, CURLOPT_TIMEOUT, 30 ); //不取得返回头信息
curl_setopt ($curl, CURLOPT_HEADER, 0 );
/*
CURLOPT_RETURNTRANSFER
设置为1 如果成功只将结果返回,不自动输出任何内容,如果失败 返回false
设置为0或不使用这个选项 ,如果成功返回true,自动输出返回内容,如果失败返回false
*/
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); $result = curl_exec ($curl); //关闭
curl_close ( $curl ); $res = json_decode($result,true);
print_r($res);
 //3.模拟登录lamp兄弟连
$url = 'http://bbs.lampbrother.net/login.php'; $arr = array(
'step'=>2,
'lgt'=>2,
'pwuser'=>'你的邮箱',
'pwpwd'=>'你的密码',
'question'=>0,
'hideid'=>0
); /*****方法一*****/
/*
// 把COOKIE保存至cookie.txt
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
先把COOKIE保存文件,调用的时候还得读取文件,这样意味着两次的IO操作,效率低
*/ /*
$cookie_file = tempnam('./temp','cookie');
//先获取cookie保存文件
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arr));
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
//echo $data; //通过保存文件的cookie请求首页
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
*/ /*****方法二*****/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//这里返回头信息方便获取
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arr));
$content = curl_exec($ch);
curl_close($ch);
//解析http数据流
list($header, $body) = explode("\r\n\r\n",$content);
print_r($header);
//解析cookie
preg_match_all("/set-cookie:([^\r\n]*)/i",$header,$matches);
//print_r($matches);
$cookies = implode(';', $matches[1]);
print_r($cookies); //后面用curl请求时可以直接使用
// curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
curl_exec($ch);
curl_close($ch);
<?php
//4.开源中国信息抓取实例 header('Content-type:text/html;charset=utf-8');
$url = 'https://www.oschina.net/action/user/hash_login'; $data = array(
'email'=>'你的邮箱',
'pwd'=>sha1('你的密码'),
'save_login'=>1,
); $headers = array(
'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36',
'Referer:https://www.oschina.net/home/login?goto_page=http%3A%2F%2Fwww.oschina.net%2Fcode%2Fsnippet_47318_27221',
); //获取cookie
$curl = curl_init($url);
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
curl_setopt ( $curl, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ($curl, CURLOPT_TIMEOUT, 30 );
curl_setopt ($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec ($curl);
curl_close ($curl);
//print_r($result);
preg_match_all("/set-cookie:([^\r\n]*)/i",$result,$matches);
//print_r($matches);
$cookies = implode(';', $matches[1]); //抓取信息
$url = 'http://my.oschina.net/xxxxx/admin/inbox';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
$res = curl_exec($ch);
curl_close($ch); require './simple_html_dom.php'; //simple_html_dom解释包使用实例 $html1 = new simple_html_dom();
$html1->load($res);
$r = $html1->find('ul.Msgs li[id]'); $html2 = new simple_html_dom();
foreach($r as $k=>$v){
$html2->load($v);
$t = $html2->find('.msg');
foreach($t as $key=>$value){
echo $value.'<hr/>';
}
} $html2->clear();
?>

curl学习(实例不断总结)的更多相关文章

  1. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...

  2. Ant学习实例

    ant   目录(?)[+] Ant学习实例 安装Ant 基础元素 project元素 target元素 property元素 完整示例   Ant学习实例 1.安装Ant 先从http://ant. ...

  3. curl 学习保存

    原文地址 http://www.jb51.net/article/48866.htm php中的curl使用入门教程和常见用法实例 作者: 字体:[增加 减小] 类型:转载   起先cURL是做为一种 ...

  4. cURL 学习笔记与总结(2)网页爬虫、天气预报

    例1.一个简单的 curl 获取百度 html 的爬虫程序(crawler): spider.php <?php /* 获取百度html的简单网页爬虫 */ $curl = curl_init( ...

  5. curl 学习

    <?php // $username =13800138000; // $password =123456; // $sendto =13912345678; // $message = &qu ...

  6. zTree学习实例

    今天做完一个zTree的实例,供有需要的学习! 效果图如下:

  7. (转)jQuery插件编写学习+实例——无限滚动

    原文地址:http://www.cnblogs.com/nuller/p/3411627.html 最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简 ...

  8. jQuery插件编写学习+实例——无限滚动

    最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简单学习了下jQuery的插件编写,然后分享出来. 先说下基础知识,基本上分为两种,一种是对象级别的插 ...

  9. WCF通信简单学习实例

    最近在学习WCF通信,自己简单做个实例分享一下,环境是VS2015,使用的项目都是WPF的项目,其实大家用Winform或者Web项目也可以,都可以用的. 一.服务器端 1.创建WCF服务 服务名为W ...

随机推荐

  1. ORA:01745 无效的主机 绑定变量名

    原因是:mybatis中的mapping映射时,sql语句中忘了加逗号,且逗号处有换行

  2. node.js入门基础

    内容: 1.node.js介绍 2.node.js内置常用模块 3.node.js数据交互 一.node.js介绍 (1)node.js特点 与其他语言相比,有以下优点: 对象.语法和JavaScri ...

  3. python拓展3 常用算法

    知识内容: 1.递归复习 2.算法基础概念 3.查找与排序 参考资料: http://python3-cookbook.readthedocs.io/zh_CN/latest/index.html h ...

  4. shell随笔

    一, case的详细用法:   参考文章(http://blog.csdn.net/dreamtdp/article/details/8048720) 语句实例:由用户从键盘输入一个字符,并判断该字符 ...

  5. HTML5 Canvas ( 图形变换矩阵 ) transform, setTransform

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. DDoS攻防战 (二) :CC攻击工具实现与防御理论

    故上兵伐谋 其次伐交 其次伐兵 其下攻城 攻城之法 为不得已 知己知彼 百战不殆 不知彼而知己 一胜一负 不知彼不知己 每战必败 ——孙子兵法·谋攻 我们将要实现一个进行应用层DDoS攻击的工具,综合 ...

  7. JS转义解码方法

    之前只知道可以解决传值乱码问题,今天刚好看到,从新补充下: JavaScript中有三个可以对字符串编码的函数,分别是: 转义方法: escape();//函数可对字符串进行编码 encodeURI( ...

  8. C++实现ping功能<转>

    今天接到需求要实现ping的功能,然后网上查了一些资料,对网络编程的一些函数熟悉了一下,虽然还有一些细节不清楚,但是慢慢积累. 要实现这样的功能: 基础知识 ping的过程是向目的IP发送一个type ...

  9. ios App 文件夹

    转:http://stackoverflow.com/questions/16561779/nssearchpathfordirectoriesindomains-nsuserdomainmask D ...

  10. request error: Connection aborted.', error(113, 'No route to host')

    from: https://superuser.com/questions/720851/connection-refused-vs-no-route-to-host/720860 "Con ...