<p>首先file_get_contents批量获取网页/远程图片的时候会很慢, 如果文件太大太多可能会服务器会卡死影响其它用户, 那么用Curl替代file_get_contents是比较完美的方式, php的curl很强大, 支持多线程, 当然也可以在抓取的时候伪装成百度蜘蛛来防止被发现封ip.</p><p>分享点干货, file_get_contents 获取远程图片的时候很慢, 用Curl伪装成百度蜘蛛替代file_get_contents 批量获取网页/图片则非常高效.</p><p>Curl 批量抓取网页或远程图片的代码:</p><pre class="brush:php;toolbar:false"><?php
header("Content-Type:text/html;charset=utf-8");
date_default_timezone_set('PRC');
error_reporting(E_ALL|E_STRICT);
ini_set("display_errors","On");
echogetcontent("http://www.lao8.org");//调用方式比较简单
functiongetcontent($weburl){
/*
本段代码由老修提供,转载请备注出处www.lao8.org
调用方式比较简单:echogetcontent($url);可以抓取网页/也可以抓取图片
批量抓取的时候用file_get_contents可能会飙升服务器cpu和内存,而curl方式则不会,而且还可以伪装马甲防止批量抓取被发现封ip.
*/
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$weburl);
curl_setopt($curl,CURLOPT_REFERER,'http://www.lao8.org');//伪装一个来路
curl_setopt($curl,CURLOPT_USERAGENT,'Baiduspider+(+http://www.baidu.com/search/spider.htm)');//伪装成百度蜘蛛
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);//抓取转跳
curl_setopt($curl,CURLOPT_BINARYTRANSFER,true);
curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');//gzip解压
curl_setopt($curl,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)");
$data=curl_exec($curl);
//$infos=(curl_getinfo($curl));//返回抓取网页参数的值(数组);
curl_close($curl);
return$data;
}
?></pre>