百度百科给的解释是 : curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中 .
在linux下可以在命令行中使用 curl www.baidu.com , 他会返回百度的页面代码, 也就是通过URL的方式获取了网络文件的内容
PHP中使用CURL
在php里提供了这样一个库及其函数实现curl调用 , 用来抓取页面内容是比较不错的用途 , 也就是爬虫咯, 模拟登陆也可以
用php_info() 查看是否开启了curl . 如未开启, 请在开启后进行下一步
来一个例子
<?php
//1.初始化curl对象
$curl = curl_init();
//2.设置一系列访问参数 curl set options
/*
curl_setopt(param1, param2, param3)
param1 : 也就是curl对象句柄
param2 : 设置的参数的类型(设置的是什么参数), 大多以CURLOPT_xxx的形式
param3 : 参数的值, 这个值的类型由param2决定
*** cURL 在php中的更多函数操作, 使用范例和curl_setopt的参数可以参考 php文档 : http://php.net/manual/zh/ref.curl.php ***
*/
curl_setopt($curl, CURLOPT_URL, 'www.baidu.com'); // 设置抓取的url
curl_setopt($curl, CURLOPT_HEADER, 1); // 设置header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 设置返回的方式
//3. 执行curl操作
$data = curl_exec($curl); //
//4. 关闭cURL
curl_close($curl);
// 处理数据
echo $data;
?>
然后返回了这样的结果(www.baidu.com 的界面)
其中头部是一些 Header信息, 后面就是html的内容, 在浏览器中html内容直接输出后被转换成页面内容, 这与在linux中执行curl 操作是相同的 , 这样我们就获取到了页面的数据 , 如果是做爬虫那就可以使用正则表达式提取需要的数据 , 然后存取到数据库中就可以了
POST数据
<?php
// 初始化的时候设定访问地址
$curl = curl_init("localhost/phplearn/curl_receive.php"); // 这个地址是我自己写的测试用的, 唯一的输出内容是下面返回结果的第二行的内容
$post = "username=arron&password=r20jf02jg"; // 设置数据
curl_setopt($curl, CURLOPT_HEADER, 1); // 设置header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 设置返回的方式
curl_setopt($curl, CURLOPT_POST, 1); // 开启post
curl_setopt($curl, CURLOPT_POSTFIELDS, $post); // 设置post数据
$result = curl_exec($curl); // 执行
// 避免访问错误
if (curl_errno($curl) > 0)
die("Wrong : ".curl_error($curl));
echo $result;
curl_close($curl); // 关闭
?>
然后我们看看返回结果
HTTP/1.1 200 OK Date: Mon, 24 Aug 2015 06:54:23 GMT Server: Apache/2.4.10 (Ubuntu) Vary: Accept-Encoding Content-Length: 71 Content-Type: text/html; charset=UTF-8
您POST过来的数据是 : username = arron , password = r20jf02jg
同样返回了Header信息和我们访问页面的输出信息, 并将post的数据送到了我们的访问页面 . 如果是get方法传递数据直接在url后面加上就可以了 .
更多curl使用方法以后再说
参考curl文档 : http://php.net/manual/zh/ref.curl.php
本文仅作为技术交流