这几天在帮一些同学处理问题的时候,突然发现这些同学是使用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的详细解说 【转载】相关推荐

  1. php中curl的详细解说

    这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cUR ...

  2. linux wget返回值_Linux中curl命令和wget命令的使用介绍与比较

    原文链接: 这篇文章主要给大家介绍了Linux中curl命令和wget命令使用以及这两者之间的区别比较,curl和wget命令都是Linux下的工具,可以用来下载文件.文中介绍的非常详细,相信对大家具 ...

  3. Linux中curl命令详解(做定时任务超级有用)!

    Linux curl命令详解 命令:curl 在kingle中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...

  4. PPT中嵌入视频详细解说

    PPT中嵌入视频详细解说 本文摘自我的博客:http://www.gesangweb.com/266.htm 这几天事情冗多,昨天碰到的ppt插入对象自动保存不成功今天找到解决方案.王老师让我帮她嵌入 ...

  5. php循环输出多个网络地址图片,php中curl循环往请求多个URL和多线程去请求多个URL的方法...

    php 中curl 循环去请求多个URL和多线程去请求多个URL的方法 第一种:循环请求$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) ...

  6. php获取curl头_php中CURL请求头和响应头获取方法

    本文主要和大家分享php中CURL请求头和响应头获取方法,希望能帮助到大家. 1.从CURL中获取响应头$oCurl = curl_init(); // 设置请求头, 有时候需要,有时候不用,看请求网 ...

  7. curl 请求日志_HTTP入门(一):在Bash中curl查看请求与响应

    HTTP入门(一):在Bash中curl查看请求与响应 本文简单总结HTTP的请求与响应. 本文主要目的是对学习内容进行总结以及方便日后查阅. 详细教程和原理可以参考HTTP文档(MDN). 本文版权 ...

  8. _linux中curl命令详解-linux运维

    linux中curl命令的使用详情:1.[curl url]获取该网址的文本信息:2.[curl -i url]获取该网址的文本信息以及协议头部信息:3.[curl -x proxy url]使用代理 ...

  9. shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法

    今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'appl ...

最新文章

  1. Python在linux服务器上解压,python3传文件到linux服务器然后解压
  2. 用C语言解“求整数段和”题
  3. 网络数据的XML解析
  4. java B2B2C springmvc mybatis电子商务平台源码-Spring Cloud Security
  5. ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤(特征分析与特征处理)+分类模型设计)
  6. python max和min函数的高级用法
  7. html dom概念,js学习之HTML DOM的一些基础概念
  8. python定位元素在列表中的位置_python定位列表元素
  9. 即插即用!视频超分中的涨点神器:iSeeBetter
  10. git与github学习笔记
  11. python下路径问题及模型存储
  12. zoj 1562 反素数 附上个人对反素数性质的证明
  13. oc_转_类的数组的实现和操作
  14. PoA共识引擎算法实现分析(2)
  15. Spring注解标签详解@Autowired @Qualifier等 @Slf4j
  16. eclipse中jsp页面%@page import=javax.servlet.http.*%报错
  17. Java操作MongoDB(聚合函数)向Mongo插入及查询数据
  18. [BUG] CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)...
  19. 杭电acm 4282 A very hard mathematic problem
  20. dSPACE控制电机启动与停止

热门文章

  1. #ifndef#define与namespace杂谈
  2. 7-6 实现图形接口及多态性 (30 分)
  3. PAT乙级 1023 组个最小数 (20 分)
  4. 图像处理-图像增强(三)
  5. PTA13、随机生成密码 (10 分)
  6. android:autolink 颜色,Android设置完autoLink属性后自定义跳转到指定界面
  7. linux系统调用记录模块实验报告,华科操作系统实验报告(DOC)
  8. Windows Mobile下使用Native C++开发日志类
  9. 谜题39:您好,再见!
  10. spring之@value设置默认值