curl_error()函式的作用是返回一个包含当前会话错误讯息的字符串。
curl_errno() 函式的作用是返回一个包含当前会话错误讯息的数字编号。
curl_multi_init()函式的作用是初始化一个curl批处理句柄资源。
curl_multi_add_handle() 函式的作用是向curl批处理会话中添加单独的curl句柄资源。
url_multi_add_handle() 函式有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。
curl_multi_exec() 函式的作用是解析一个curl批处理句柄,curl_multi_exec()函式有两个参数,第一个参数表示一个批处理句柄资源,第二个参数是一个引用值的参数,表示剩余需要处理的单个的curl句柄资源数量。
curl_multi_remove_handle() 函式表示移除curl批处理句柄资源中的某个句柄资 源,curl_multi_remove_handle()函式有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。
curl_multi_close() 函式的作用是关闭一个批处理句柄资源。
<?php
$ch1= curl_init();
$ch2= curl_init();
curl_setopt($ch1, CURLOPT_URL,”http://www.baidu.com/”);
curl_setopt($ch1, CURLOPT_HEADER,0);
curl_setopt($ch2, CURLOPT_URL,”http://www.google.com/”);
curl_setopt($ch2, CURLOPT_HEADER,0);
$mh= curl_multi_init();
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
do{
curl_multi_exec($mh,$flag);
}while($flag>0);
curl_multi_remove_handle($mh,$ch1);
curl_multi_remove_handle($mh,$ch2);
curl_multi_close($mh);
?>
curl_multi_getcontent()函式的作用是在设置了CURLOPT_RETURNTRANSFER的情况下,返回获取的输出的文本流。
curl_multi_info_read()函式的作用是获取当前解析的curl的相关传输讯息。
curl_multi_select()Get all the sockets associated with the cURL extension, which can then be “selected”
范例解说:
如果要用php来抓取网页,一般人最常想到的就是「fopen」这个函式了。但现在有了更强大的函式,「curl」,至于这个函式怎么用呢?就往下看吧!
如使用mysql一样,首先,我们必须先建立一个「curl」的联机,也因此,必须使用到「$ch = curl_init()」这个函式。而为了怕建立联机忘了关闭。因此,必须先写好关闭的函式,「curl_close($ch)」。
接下来,你可以设定他截取网页的选项, 一般来说常用的有:
CURLOPT_RETURNTRANSFER将结果回传成字符串CURLOPT_URL设定截取网址CURLOPT_HEADER是否截取header的信息CURLOPT_FOLLOWLOCATION是否抓取转址CURLOPT_USERAGENT浏览器的user agent
最后,再执行「curl_exec($ch)」以取出结果就可以了。
而以抓取yahoo为例,若我们要伪装成google bot去抓取,那么我们可以写成下列的样子。
<?php
$ch= curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_URL,”www.yahoo.com.tw”);
curl_setopt($ch, CURLOPT_HEADER,false);
curl_setopt($ch, CURLOPT_USERAGENT,”Google Bot”);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
$output= curl_exec($ch);
curl_close($ch);
echo$output;
?>
当然,你也可以将选项们设定一个数组,以增加设定时的阅读度。这时就得动用「curl_setopt_array()」这个函式了。
而改写上列程序如下:
<?php
$ch= curl_init();
$options=array(
CURLOPT_URL =>’www.yahoo.com.tw’,
CURLOPT_HEADER =>false,
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_USERAGENT =>”Google Bot”,
CURLOPT_FOLLOWLOCATION =>true
);
curl_setopt_array($ch,$options);
$output= curl_exec($ch);
curl_close($ch);
echo $output;
?>
转载请注明:夜阑小雨 » 【转】php_发现curl神器_CURL 教學_2