当前位置:编程学习 > php >>

用Curl伪装成百度蜘蛛替代file_get_contents批量获取网页/图片

分享点干货, file_get_contents 获取远程图片的时候很慢,  用Curl伪装成百度蜘蛛替代file_get_contents 批量获取网页/图片则非常高效. 


Curl 批量抓取网页或远程图片的代码:

<?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"); 
echo getcontent("http://www.lao8.org");//调用方式比较简单
function getcontent($weburl){
/* 
本段代码由老修提供, 转载请备注出处 www.lao8.org
调用方式比较简单: echo getcontent($url); 可以抓取网页/也可以抓取图片
批量抓取的时候用file_get_contents可能会飙升服务器cpu和内存, 而 curl方式则不会, 而且还可以伪装马甲防止批量抓取被发现封ip.
*/
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $weburl); 
curl_setopt($curl, CURLOPT_REFERER, 'http://face.zhaoxi.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; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); 
$data = curl_exec($curl);
// $infos = (curl_getinfo($curl));//返回抓取网页参数的值(数组);
curl_close($curl);
return $data;
}
?>
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,