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访问查询mysql数据的三种方法
Oct 09 PHP
详解:――如何将图片储存在数据库里
Dec 05 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 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生成excel列序号代码实例
2013/12/24 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
使用javascript插入样式
2016/03/14 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
python正则实现提取电话功能
2018/02/24 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
Python列表对象实现原理详解
2019/07/01 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
卫生安全检查制度
2014/02/04 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
小学生手册家长意见
2015/06/03 职场文书
小学体育组工作总结
2015/08/13 职场文书
领导干部学习心得体会
2016/01/23 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang