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实现与ASP Banner组件相似的类
Oct 09 PHP
PHP读MYSQL中文乱码的解决方法
Dec 17 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
深入密码加salt原理的分析
Jun 06 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php获取网页上所有链接的方法
Apr 03 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
PHP convert_cyr_string()函数讲解
Feb 13 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
mysql建立外键
2006/11/25 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
yii2安装详细流程
2018/05/23 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
简单的Vue异步组件实例Demo
2017/12/27 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
详解Axios统一错误处理与后置
2018/09/26 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python中return语句用法实例分析
2015/08/04 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python assert的用处示例详解
2019/04/01 Python
python线程信号量semaphore使用解析
2019/11/30 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
sealed修饰符是干什么的
2012/10/23 面试题
大学生预备党员自我评价分享
2013/11/16 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
毕业生自荐信范文
2015/03/05 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记