php curl常用的5个经典例子 |
本文标签:php,curl,例子 我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等 。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了 。 1,抓取无访问控制文件 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出 $result=curl_exec($ch); curl_close($ch); ?> 2,使用代理进行抓取 为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了 。google对你的ip地址做限制这个时候,你可以换代理重新抓 。 <pre name="code" class="php"><?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://blog.51yip.com"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080); //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密码的话,加上这个 $result=curl_exec($ch); curl_close($ch); ?> 3,post数据后,抓取数据 单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的 。 <?php $ch = curl_init(); /*在这里需要注意的是,要提交的数据不能是二维数组或者更高 *例如array('name'=>serialize(array('tank','zhang')),'sex'=>1,'birth'=>'20101010') *例如array('name'=>array('tank','zhang'),'sex'=>1,'birth'=>'20101010')这样会报错的*/ $data = array('name' => 'test', 'sex'=>1,'birth'=>'20101010'); curl_setopt($ch, CURLOPT_URL, 'http://localhost/mytest/curl/upload.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ?> 在 upload.php文件中,print_r($_POST);利用curl就能抓取出upload.php输出的内容Array ( [name] => test [sex] => 1 [birth] => 20101010 ) 4,抓取一些有页面访问控制的页面 以前写过一篇,页面访问控制的3种方法有兴趣的可以看一下 。 如果用上面提到的方法抓的话,会报以下错误 You are not authorized to view this page 这个时候,我们就要用CURLOPT_USERPWD来进行验证了 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://club-china"); /*CURLOPT_USERPWD主要用来破解页面访问控制的 *例如平时我们所以htpasswd产生页面控制等 。*/ //curl_setopt($ch, CURLOPT_USERPWD, 'user:password'); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_REFERER, "http://club-china"); curl_setopt($ch, CURLOPT_HEADER, 0); $result=curl_exec($ch); curl_close($ch); ?> 以上这篇php curl常用的5个经典例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家 。 |