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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
PHP中的替代语法介绍
Jan 09 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
php实现查询功能(数据访问)
May 23 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP工厂模式的日常使用
Mar 20 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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和ACCESS写聊天室(二)
2006/10/09 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
javascript回调函数详解
2018/02/06 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
vuex实现购物车功能
2020/06/28 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
大学新生入学感想
2015/08/07 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server