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缓存技术介绍
Nov 25 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
php去除字符串换行符示例分享
Feb 13 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 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提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
python字典多条件排序方法实例
2014/06/30 Python
Python批量发送post请求的实现代码
2018/05/05 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python config文件的读写操作示例
2019/09/27 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
英语系本科生个人求职信
2013/09/21 职场文书
自荐书模板
2013/12/19 职场文书
物业总经理岗位职责
2014/02/28 职场文书
自我鉴定书
2014/03/24 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
《打电话》教学反思
2016/02/22 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL