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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
实用函数2
Nov 08 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
thinkphp分页集成实例
Jul 24 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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中的Class的几点个人看法
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
如何判断php数组的维度
2013/06/10 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
python中set常用操作汇总
2016/06/30 Python
python正则实现提取电话功能
2018/02/24 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
贸易经济专业自荐书
2014/06/29 职场文书
出国留学单位推荐信
2015/03/26 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技