PHP批量抓取远程网页图片并存到本地实现方法和源码

  • 时间:
  • 浏览:80

做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢。有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不会被影响。


但是作为一个热爱PHP的开发者来说,更多的是喜欢自己动手。所以,我就写出了下面的一个源码,php远程抓取图片小程序。可以读取css文件并抓取css代码中的背景图片,下面这段代码也是针对抓取css中图片而编写的。



header("Content-Type: text/html; charset=utf-8");

        error_reporting(E_ERROR|E_WARNING);


//全局配置

$fromFile = "aaa.css";    //要抓取的文件

$savePath = "ttttttttt";   //保存路径

$fromDomain = "http://www.xxx.com/"; //要抓取的域名


//读取css样式并且分离出所有image的url

$str = file_get_contents($fromFile);

$strArr = explode("url(",$str); 

$i = 0;

foreach($strArr as $val){

$val1 = explode(")",$val);

if(strpos($val1[0],'jpg')||strpos($val1[0],'png')||strpos($val1[0],'gif'))

$imgUrl[$i++] = $val1[0];

}

        //PS:上面可以用正则的,但是我觉得这样也不错


//开始抓取

foreach($imgUrl as $url){

if($url=="") continue;

$filename = $savePath.$url;

$url = $fromDomain.$url;

getImage($url,$filename);

}


function getImage($url,$filename){

ob_start();

$context = stream_context_create(

           array (

        'http' => array (

        'follow_location' => false // don't follow redirects

        )

        )

);

//请确保php.ini中的fopen wrappers已经激活

readfile( $url,false,$context);

$img = ob_get_contents();

                ob_end_clean();

$fp2 = @fopen($filename,"a");

fwrite($fp2,$img);

fclose($fp2);

echo $filename." ok √
";

}


?>


然后没有意外的话,你会发现,你指定的文件夹下面已经满满的都是图片了,哈哈..