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对数组排序代码分享
Feb 24 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
PHP输出日历表代码实例
Mar 27 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
php时间计算相关问题小结
May 09 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
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
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
幼儿园毕业教师感言
2014/02/21 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
机器人瓦力观后感
2015/06/12 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
Java数据结构之堆(优先队列)
2022/05/20 Java/Android
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers