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 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
PHP文件读写操作之文件读取方法详解
Jan 13 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php使用GeoIP库实例
Jun 27 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PDO::rollBack讲解
Jan 29 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 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
日本十大惊悚动漫
2020/03/04 日漫
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
Prototype String对象 学习
2009/07/19 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
基于node.js之调试器详解
2017/08/22 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
Python3.2中的字符串函数学习总结
2015/04/23 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
使用Python对Access读写操作
2017/03/30 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Django中Middleware中的函数详解
2019/07/18 Python
python 深度学习中的4种激活函数
2020/09/18 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
花店创业计划书范文
2014/02/07 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python