PHP curl简单用法举例和相关函数介绍

一、PHP curl抓取代码编写流程:

使用PHP curl执行抓取请求分为下面基本四步:
  1. 使用 curl_init() 函数创建一个curl句柄;
  2. 使用 curl_setopt() 函数为curl句柄设置相应选项,php curl的丰富功能依靠此函数的设置来实现;
  3. 使用 curl_exec() 函数执行抓取请求;
  4. 使用 curl_close() 函数关闭curl句柄,释放内存;
  

二、PHP curl最基本用法:

  下面使用简单的例子,通过使用php curl抓取本站首页源代码长度,介绍php curl的基本用法。注意CURLOPT_RETURNTRANSFER选项十分重要,作用为执行curl_exec函数时,是否返回curl传输内容到变量,默认为否,会直接将内容输出网页。
<?php
// 创建一个curl句柄
$ch = curl_init();
// 设置访问的URL
curl_setopt($ch, CURLOPT_URL, "http://aiezu.com");
// 将curl请求执行时,将结果返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行curl请求,返回结果到变量
$html = curl_exec($ch);
// 关闭curl句柄
curl_close($ch);
echo strlen($html);
运行结果:
96161
 

三、PHP curl GET请求和POST请求:

1、php curl get请求:

<?php
$data = array('sex'=>1, 'age'=>18);
$url = sprintf("http://aiezu.com/test.php?%s", http_build_query($data));
// $url: http://aiezu.com/test.php?sex=1&age=18

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
输出结果:
[REQUEST_METHOD]: GET

$_GET:
Array
(
    [sex] => 1
    [age] => 18
)
 
2、php curl post 提交数据:
<?php
$data = array('name'=>'爱E族', 'domain'=>'aiezu.com');
$url = "http://aiezu.com/test.php";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 告诉curl使用POST的方式提交
curl_setopt($ch, CURLOPT_POST, 1);
// 设置要POST提交的数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$html = curl_exec($ch);
curl_close($ch);
echo $html;
输出结果:
[REQUEST_METHOD]: POST
[CONTENT_LENGTH]: 250
[CONTENT_TYPE]: multipart/form-data; boundary=----------------------------39f5fe9c583c

$_POST:
Array
(
    [name] => 爱E族
    [domain] => aiezu.com
)
 

四、PHP curl组件相关函数:

  PHP curl组件相关函数功能介绍:
 函数名函数介绍



curl_init【常用】初始化一个curl会话,返回一个curl句柄;
curl_setopt【常用】设置curl选项,具体选项介绍请参考php官方介绍:curl_setopt;
curl_setopt_array【常用】使用数组的方式批量设置curl选项;
curl_copy_handle克隆一个curl句柄和它的所有选项;
curl_exec【常用】执行curl会话;
curl_pause 暂停并取消暂停一个连接(PHP 5.5以上版本);
curl_reset将curl句柄的所有curl选项重置为默认值(PHP 5.5以上版本);
curl_getinfo获取curl最后会话信息,包含消耗时间、上传下载字节数、传输速度等信息;
curl_errno返回curl会话最后一次的数字错误代码;
curl_error返回curl会话最后一次的字符串错误描述;
curl_strerror通过curl数字错误代码返回字符串描述(PHP 5.5以上版本);
curl_close【常用】关闭curl会话;
curl_escape 对指定字符串进行URL编码(PHP 5.5以上版本);
curl_unescape 对指定字符串进行URL解码(PHP 5.5以上版本);
curl_version以数组的形式返回php curl版本信息;


curl_multi_init创建一个curl批处理句柄(并发请求);
curl_multi_add_handle向curl批处理句柄中添加单独的curl句柄;
curl_multi_remove_handle从curl批处理句柄中移除某个curl句柄;
curl_multi_setopt为curl批处理句柄设置选项;
curl_multi_exec执行curl批处理句柄;
curl_multi_info_read尝试从curl批处理句柄中获取 新curl子请求的完成信息;
curl_multi_getcontent读取curl批处理句柄中curl子句柄的请求返回内容;
curl_multi_close关闭curl批处理句柄;
curl_multi_select 等待所有curl批处理中的活动连接;
curl_multi_strerror通过curl批处理数字错误代码返回字符串描述(PHP 5.5以上版本);



curl_share_init初始化一个curl共享句柄(PHP 5.5以上版本);
curl_share_setopt为 curl共享句柄设置选项(PHP 5.5以上版本);
curl_share_close关闭curl共享句柄(PHP 5.5以上版本);

curl_file_create创建一个curlfile对象(PHP 5.5以上版本);
 

五、参考资料:

0 个评论

要回复文章请先登录注册