您的位置:首页 > 编程语言 > PHP开发

php中的curl简述

2015-08-24 13:50 344 查看
  百度百科给的解释是 : 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

本文仅作为技术交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: