这几天在帮一些同学处理问题的时候,突然发现这些同学是使用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传值,甚至上传!

最新文章

  1. 来玩Play框架07 静态文件
  2. iOS中常用属性的关键字的使用说明
  3. XML的解析和保存
  4. ajax对象属性withCredentials
  5. saybyeto2015
  6. Android 图像压缩,和LRU算法使用的推荐链接
  7. tyvj P1519 博彩游戏(AC自动机+DP滚动数组)
  8. [SCOI2005]互不侵犯King
  9. resolvconf: Error: /etc/resolv.conf isn&#39;t a symlink, not doing anything.
  10. makefile 自动处理头文件的依赖关系 (zz)
  11. iOS远程消息推送自我整理版
  12. 文件系统:介绍一个高大上的东西 - 零基础入门学习Python030
  13. 在github搭建你的个人主页
  14. Ubuntu 14.04下搭建Node.js的开发环境
  15. Power Strings poj2406(神代码)
  16. BZOJ 3698: XWW的难题 [有源汇上下界最大流]
  17. Got error -1 from storage engine
  18. Vue2+VueRouter2+webpack 构建项目实战(一):准备工作
  19. sench touch 页面跳转
  20. Nginx 403 forbidden多种原因及故障模拟重现

热门文章

  1. NFS指定端口,NFS缓存(转载)
  2. 学习MPI并行编程记录
  3. 7-11 社交网络图中结点的“重要性”计算 (30 分)(Dijkstra算法)
  4. 【Codeforces Global Round 1 E】Magic Stones
  5. Maven学习总结(6)——Maven与Eclipse整合
  6. noip模拟赛 赤の夜
  7. firedac数据集和字符串相互转换
  8. iOS: 两句话给UILabel添加下划线
  9. ASP.NET MVC 提供与訪问 Web Api
  10. 【LeetCode】Longest Substring Without Repeating Characters 解题报告