基于PHP的curl的知识小结

cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。
一般读取文件(URL)的方法是使用PHP内置的一些读文件函数,比如file_get_contents,file等;但是这些方法都只能进行简单的文件读取,不能实现复杂的功能:向URL POST数据、使用代理服务器、读取使用SSL协议的URL、URL登陆认证等。而cURL恰恰提供了对这些功能的支持。
操作系统环境:Ubuntu12.04 X64
在使用curl之前先确认是否已经安装并且开启来curl模块。
如果没有安装或者开启curl模块,在使用curl的函数时候,会报错,函数没有定义。
安装curl模块:
apt-get install php5-curl
基于PHP的curl的知识小结 - kaizhu_QIN - kaizhu_Qin
然后重启apache
/etc/init.d/apache2 restart
在phpinfo可以看到curl模块相对应的信息:
基于PHP的curl的知识小结 - kaizhu_QIN - kaizhu_Qin
 
*****************************************************华华丽的分割线***********************************************
下面我们来总结下curl常见的功能:
建立cURL请求的方法:
1.初始化
使用curl_init方法初始化一个cURL句柄
$curl = curl_init("http://www.baidu.com/");
curl_init方法提供了一个可选参数URL,返回一个cURL句柄供curl_setopt(), curl_exec()和curl_close() 函数使用。

curl_setopt :设置一个cURL传输选项,或者使用curl_setopt_array批量设置一组参数。
如果在curl_init中没有指定URL,则需要在curl_setopt中手工设置这个值,如果指定了URL,则CURLOPT_URL被自动设成这个值。
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL," http://www.baidu.com/ " );

curl_exec   执行一个cURL会话
这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。
成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。

curl_close:关闭一个cURL会话
关闭一个cURL会话并且释放所有资源。cURL句柄curl也会被释放。

2.设置传输选项
CURLOPT_RETURNTRANSFER 将 curl_exec()获取的信息以文件流的形式存在变量返回,还是直接输出。
更多传输选项可以参考:http://php.net/manual/zh/function.curl-setopt.php

curl_getinfo($curl)获取一个cURL会话的信息。

curl_getinfo($curl)返回的数组中包括如下信息:
"url" //资源网络地址
"content_type" //内容编码
"http_code" //HTTP状态码
"header_size" //header的大小
"request_size" //请求的大小
"filetime" //文件创建时间
"ssl_verify_result" //SSL验证结果
"redirect_count" //跳转技术
"total_time" //总耗时
"namelookup_time" //DNS查询耗时
"connect_time" //等待连接耗时
"pretransfer_time" //传输前准备耗时
"size_upload" //上传数据的大小
"size_download" //下载数据的大小
"speed_download" //下载速度
"speed_upload" //上传速度
"download_content_length"//下载内容的长度
"upload_content_length" //上传内容的长度
"starttransfer_time" //开始传输的时间
"redirect_time"//重定向耗时

例如:我们设置 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1),即返回数据以文本流形式返回,不会在屏幕显示。
<?php
        $ch = curl_init("http://www.baidu.com/");
        echo "</br>";
        $info = curl_getinfo($ch);
        echo "<pre>";
        print_r ($info);
        echo "</pre>";
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        //echo $output;
        curl_close($ch);
?>
基于PHP的curl的知识小结 - kaizhu_QIN - kaizhu_Qin
 
运行下:php curl.php
基于PHP的curl的知识小结 - kaizhu_QIN - kaizhu_Qin

确实没有在屏幕显示。。返回的信息已经存储在$output里面。
现在我们来去掉 echo $output 的注释。
再次运行curl.php
基于PHP的curl的知识小结 - kaizhu_QIN - kaizhu_Qin

好吧,现在我们已经获取到了页面的代码,如果想实现自动采集信息,我们可以带页面的结构进行分析,利用正则表达式,提取到我们所需的信息。

当然,curl不仅仅是者点功能。curl可以:
使用代理服务器;
向URL POST数据;
使用浏览器用户代理;
访问SSL协议的URL。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值