频道栏目
首页 > 资讯 > 内容采集 > 正文

php抓取网站图片并保存本地

16-01-06        来源:[db:作者]  
收藏   我要投稿

此方法是用file_get_contents()函数抓取网站的所有内容,然后用正则匹配出内容里面的图片下载下来。省的自己下载了。首先举个例子吧。 代码如下:


$text=file_get_contents("http://www.bao.fm");
//取得所有img标签,并储存至二维阵列match

preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/', $text, $match);

//打印出match
$houzhui = "./tp/".time().rand(10000,50000).".".png;
$yuanname = getImage($match[1][2],$houzhui,tp);

//下载图片方法

function getImage($url,$filename='',$type=0){
if($url==''){return false;}
if($filename==''){
$ext=strrchr($url,'.');
if($ext!='.gif' && $ext!='.jpg'){return false;}
$filename=time().$ext;
}
//文件保存路径
if($type){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$img=curl_exec($ch);
curl_close($ch);
}else{
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
}
$size=strlen($img);
//文件大小
$fp2=@fopen($filename,'a');
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
?>

这种方法有一个弊端,比如网站有分页的话就没法抓取下一页的内容了,那也可以改一下代码,看一下网站分页的链接是什么样的,然后for循环file_get_contents()函数,把链接拼到里面。

相关TAG标签
上一篇:XML技巧五则
下一篇:AJAX利用之草稿主动保留
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站