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操作符与控制结构代码
Dec 30 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
功能强大的php分页函数
Jul 20 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
python常见数制转换实例分析
2015/05/09 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
社会实践心得体会
2014/01/03 职场文书
房地产项目策划书
2014/02/05 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
选购到合适的激光打印机
2022/04/21 数码科技