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

<?php

$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()函数,把链接拼到里面。

 

文章均属 松林's blog 原创 转载请注明转自松林's blog

本文地址 :http://www.songlin51.com/archives/794.html