欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

【转】php_发现curl神器_CURL 教學_2

PHP 夜阑小雨 1540℃ 0评论

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

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址