PHP中CURL详细教程

来源:互联网 发布:mac unix 编辑:程序博客网 时间:2024/06/05 17:46

一:什么是CURL
CURL:Client URL Library Functions
官方定义为:使用URL语法传输数据的命令行工具。(有点晕。。。)

  • 举例理解: 顾客到饭店吃饭。

顾客———服务员————饭店

顾客到饭店吃饭,一般来说(没有服务员的饭店除外),有以下几个流程。
1:顾客通过服务员点菜;
2:饭店通过服务员了解到顾客要点的菜,做好菜;
3:饭店将做好的菜通过服务员传递给顾客;
可以知道,服务员承担了一个媒介的作用。即是顾客和饭店间沟通的桥梁

  • 类比互联网世界:

客户端———CURL————服务器

互联网上有各种各样的资源,比如图片、网页、脚本、数据等其他资源。我们作为客户端(比如浏览器),要想获得服务器的资源,如何获得呢?一般来说,也有以下几个流程。
1:客户端通过CURL告知服务器自己想要什么资源(顾客通过服务员告诉饭店要吃什么菜)。
2:服务器通过CURL了解到客户端要请求的资源,并准备好资源(顾客通过服务员知道顾客点的菜,并做好菜)。
3:服务器将准备好的资源通过CURL传递给客户端(饭店通过服务员上菜)。
可以知道,CURL承担了一个媒介的作用。即是客户端和服务器沟通的桥梁

总结为:CURL是客户端向服务器请求资源的工具。

二:CURL的使用场景
可以得到网页资源、webservice(比如查号码归属地)、FTP服务器里的文件资源、其他资源。

  1. 网页资源:编写网页爬虫。
  2. webservice数据接口资源:动态获取接口数据,比如天气、号码归属地等。
  3. FTP服务器里面的文件资源:下载FTP里的文件。
  4. 其他资源:所有网络上的资源都可以用CURL下载到。

    三:CURL操作步骤解析
    注意:PHP一定要添加CURL扩展才可以使用,可通过 echo phpinfo()查看是否已安装CURL扩展,如未安装,请百度安装教程。

  5. 初始化CURL,通过curl_init()函数初始化(在使用任何服务时,我们一般都要初始化)。

  6. 客户端向服务器发送请求,服务器响应请求,使用curl_exec()函数。
  7. 客户端接收服务器的响应,使用curl_exec()函数。
  8. 关闭CURL,使用curl_close()函数。

下面是实战环节

一:用CURL制作网页爬虫

  • 以百度为例。
<?php  $curl=curl_init("http://www.baidu.com");//初始化curl  curl_exex($curl);//执行curl  curl_close($curl);//关闭curl?>

在浏览器中打开它,将会看到和百度一模一样的首页。

  • 现在,爬取了百度的内容,接下来要对爬取的内容进行处理。
<?php  $curl=curl_init();//可以先初始化,不传参数  curl_setopt($curl,CURLOPT_URL,"http://www.baidu.com");//对百度爬取  curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//设置返回来的内容不输出,以流的形式返回  $content=curl_exec($curl);//执行curl  curl_close($curl);//关闭curl  echo str_replace("baidu","hello",$content);//在$content中搜索baidu,替换为hello?>

二:webservice
什么是webservice?
webservice是不依赖于任何语言,平台,可以实现不同语言间的相互调用,进行基于HTTP协议的网络应用间的交互。

<?php$data="theCityName=青岛";$curl=curl_init();curl_setopt($curl,CURLOPT_URL,"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName");curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);curl_setopt($curl,CURLOPT_HTTPHEADER,array("application/x-www-form-urlencoded;charset=utf-8","Content-length:".strlen($data)));$res=curl_exec($curl);echo $res;
0 0
原创粉丝点击