php中curl的详细解说 【转载】
这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感,
本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用,
好,废话不多说,我们先来认识下什么是cURL,可能还有很多同学没有听说过这个工具,我先来给大家简单介绍下什么是cURL:
cURL可以使用URL的语法模拟浏览器来传输数据,
因为它是模拟浏览器,因此它同样支持多种协议,
FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:
HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,
下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件
到FTP服务器等等。
这就是我们为什么要使用cURL的原因!
使用cURL完成简单的请求主要分为以下四步:
1.初始化,创建一个新cURL资源
2.设置URL和相应的选项
3.抓取URL并把它传递给浏览器
4.关闭cURL资源,并且释放系统资源
我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获取:
像这样:
<?php $url = 'http://www.abc.com/'; // $str = file_get_contents($url);// 2 或是 $str = file($url);// 3 或是 readfile($url);
这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:
如:处理cookies,验证,表单提交,文件上传等等。
好,现在我们来用代码完成上述cURL的四步:
<?php $url="http://www.abc.com";//1.初始化,创建一个新cURL资源 $ch = curl_init();//2.设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0);//3.抓取URL并把它传递给浏览器 curl_exec($ch);//4.关闭cURL资源,并且释放系统资源 curl_close($ch);
上述四步中,其中第二步最为关键,可以设置一些高级选项:
例如上例中的CURLOPT_URL和CURLOPT_HEADER,分别代表“需要获取的URL地址”和“启用时会将头文件的信息作为数据流输出”,这些只是冰山一角,我们还可以设置很多选项:
详见:http://blog.csdn.net/yanhui_wei/article/details/21530811
看到了吧,只要在第二个函数之内设置这些选项就可以完成相应的功能,cURL的功能是灰常强大滴,大家可以尝试一下哦!
例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!
这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!
效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们
要采集一个信息量特别庞大的站,运行效率的差别可想而知!
不单单是效率上,稳定性上来说,curl也远比file_get_contents()函数要好很多!
这就是强大的curl,下文将给大家详细介绍它的高级应用,我们可以模拟浏览器的post传值,甚至上传!
转载于:https://www.cnblogs.com/weishang/p/4909302.html
php中curl的详细解说 【转载】相关推荐
- php中curl的详细解说
这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cUR ...
- linux wget返回值_Linux中curl命令和wget命令的使用介绍与比较
原文链接: 这篇文章主要给大家介绍了Linux中curl命令和wget命令使用以及这两者之间的区别比较,curl和wget命令都是Linux下的工具,可以用来下载文件.文中介绍的非常详细,相信对大家具 ...
- Linux中curl命令详解(做定时任务超级有用)!
Linux curl命令详解 命令:curl 在kingle中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...
- PPT中嵌入视频详细解说
PPT中嵌入视频详细解说 本文摘自我的博客:http://www.gesangweb.com/266.htm 这几天事情冗多,昨天碰到的ppt插入对象自动保存不成功今天找到解决方案.王老师让我帮她嵌入 ...
- php循环输出多个网络地址图片,php中curl循环往请求多个URL和多线程去请求多个URL的方法...
php 中curl 循环去请求多个URL和多线程去请求多个URL的方法 第一种:循环请求$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) ...
- php获取curl头_php中CURL请求头和响应头获取方法
本文主要和大家分享php中CURL请求头和响应头获取方法,希望能帮助到大家. 1.从CURL中获取响应头$oCurl = curl_init(); // 设置请求头, 有时候需要,有时候不用,看请求网 ...
- curl 请求日志_HTTP入门(一):在Bash中curl查看请求与响应
HTTP入门(一):在Bash中curl查看请求与响应 本文简单总结HTTP的请求与响应. 本文主要目的是对学习内容进行总结以及方便日后查阅. 详细教程和原理可以参考HTTP文档(MDN). 本文版权 ...
- _linux中curl命令详解-linux运维
linux中curl命令的使用详情:1.[curl url]获取该网址的文本信息:2.[curl -i url]获取该网址的文本信息以及协议头部信息:3.[curl -x proxy url]使用代理 ...
- shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法
今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'appl ...
最新文章
- Python在linux服务器上解压,python3传文件到linux服务器然后解压
- 用C语言解“求整数段和”题
- 网络数据的XML解析
- java B2B2C springmvc mybatis电子商务平台源码-Spring Cloud Security
- ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤(特征分析与特征处理)+分类模型设计)
- python max和min函数的高级用法
- html dom概念,js学习之HTML DOM的一些基础概念
- python定位元素在列表中的位置_python定位列表元素
- 即插即用!视频超分中的涨点神器:iSeeBetter
- git与github学习笔记
- python下路径问题及模型存储
- zoj 1562 反素数 附上个人对反素数性质的证明
- oc_转_类的数组的实现和操作
- PoA共识引擎算法实现分析(2)
- Spring注解标签详解@Autowired @Qualifier等 @Slf4j
- eclipse中jsp页面%@page import=javax.servlet.http.*%报错
- Java操作MongoDB(聚合函数)向Mongo插入及查询数据
- [BUG] CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)...
- 杭电acm 4282 A very hard mathematic problem
- dSPACE控制电机启动与停止
热门文章
- #ifndef#define与namespace杂谈
- 7-6 实现图形接口及多态性 (30 分)
- PAT乙级 1023 组个最小数 (20 分)
- 图像处理-图像增强(三)
- PTA13、随机生成密码 (10 分)
- android:autolink 颜色,Android设置完autoLink属性后自定义跳转到指定界面
- linux系统调用记录模块实验报告,华科操作系统实验报告(DOC)
- Windows Mobile下使用Native C++开发日志类
- 谜题39:您好,再见!
- spring之@value设置默认值