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中路径问题的解决方案
Oct 09 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
PHP实现下载功能的代码
Sep 29 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
Yii框架学习笔记之应用组件操作示例
Nov 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
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP递归算法的简单实例
2019/02/28 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
javascript的函数作用域
2014/11/12 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python定时执行之Timer用法示例
2015/05/27 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python实现购物车购物小程序
2018/04/18 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python中整数的缓存机制讲解
2019/02/16 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
OpenCV 边缘检测
2019/07/10 Python
python实现各种插值法(数值分析)
2019/07/30 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
Python的logging模块基本用法
2020/12/24 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
思想品德课教学反思
2014/02/10 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python