php curl常用的5个经典例子


Posted in PHP onJanuary 20, 2017

我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了。

1,抓取无访问控制文件

<?php 
 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php"); 
 curl_setopt($ch, CURLOPT_HEADER, false); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出 
 $result=curl_exec($ch); 
 curl_close($ch); 
 ?>

2,使用代理进行抓取

为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。

<pre name="code" class="php"><?php 
 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_URL, "http://blog.51yip.com"); 
 curl_setopt($ch, CURLOPT_HEADER, false); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
 curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080); 
 //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密码的话,加上这个 
 $result=curl_exec($ch); 
 curl_close($ch); 
 ?>

3,post数据后,抓取数据

单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的。

<?php 
 $ch = curl_init(); 
 /*在这里需要注意的是,要提交的数据不能是二维数组或者更高 
 *例如array('name'=>serialize(array('tank','zhang')),'sex'=>1,'birth'=>'20101010') 
 *例如array('name'=>array('tank','zhang'),'sex'=>1,'birth'=>'20101010')这样会报错的*/ 
 $data = array('name' => 'test', 'sex'=>1,'birth'=>'20101010'); 
 curl_setopt($ch, CURLOPT_URL, 'http://localhost/mytest/curl/upload.php'); 
 curl_setopt($ch, CURLOPT_POST, 1); 
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
 curl_exec($ch); 
 ?>

在 upload.php文件中,print_r($_POST);利用curl就能抓取出upload.php输出的内容Array ( [name] => test [sex] => 1 [birth] => 20101010 )

4,抓取一些有页面访问控制的页面

php curl常用的5个经典例子

以前写过一篇,页面访问控制的3种方法有兴趣的可以看一下。

如果用上面提到的方法抓的话,会报以下错误

You are not authorized to view this page
You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.

这个时候,我们就要用CURLOPT_USERPWD来进行验证了

<?php 
 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_URL, "http://club-china"); 
 /*CURLOPT_USERPWD主要用来破解页面访问控制的 
 *例如平时我们所以htpasswd产生页面控制等。*/ 
 //curl_setopt($ch, CURLOPT_USERPWD, 'user:password'); 
 curl_setopt($ch, CURLOPT_HTTPGET, 1); 
 curl_setopt($ch, CURLOPT_REFERER, "http://club-china"); 
 curl_setopt($ch, CURLOPT_HEADER, 0); 
 $result=curl_exec($ch); 
 curl_close($ch); 
 ?>

以上这篇php curl常用的5个经典例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 分页原理详解
Aug 21 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 PHP
php技巧小结【推荐】
Jan 19 #PHP
Yii CDBCriteria常用方法实例小结
Jan 19 #PHP
PHP对象实例化单例方法
Jan 19 #PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 #PHP
利用PHP获取网站访客的所在地位置
Jan 18 #PHP
PHP面向对象学习之parent::关键字
Jan 18 #PHP
php输出含有“#”字符串的方法
Jan 18 #PHP
You might like
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
了解javascript中变量及函数的提升
2019/05/27 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python单例模式实例解析
2018/08/28 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
教师的实习鉴定
2013/12/15 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
协议书范文
2015/01/27 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python