php教程

超轻量级php框架startmvc

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

更新时间:2020-03-06 21:37:39 作者:startmvc
做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上

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

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


<?php
 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 √<br/>";
 }
?>

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

ps:php获取远程图片并下载保存到本地

分享一个利用php获取远程图片并将远程图片下载保存到本地的函数代码:


/* 
*功能:php完美实现下载远程图片保存到本地 
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式 
*当保存文件名称为空时则使用远程文件原来的名称 
*/ 
function getImage($url,$save_dir='',$filename='',$type=0){ 
 if(trim($url)==''){ 
 return array('file_name'=>'','save_path'=>'','error'=>1); 
 } 
 if(trim($save_dir)==''){ 
 $save_dir='./'; 
 } 
 if(trim($filename)==''){//保存文件名 
 $ext=strrchr($url,'.'); 
 if($ext!='.gif'&&$ext!='.jpg'){ 
 return array('file_name'=>'','save_path'=>'','error'=>3); 
 } 
 $filename=time().$ext; 
 } 
 if(0!==strrpos($save_dir,'/')){ 
 $save_dir.='/'; 
 } 
 //创建保存目录 
 if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ 
 return array('file_name'=>'','save_path'=>'','error'=>5); 
 } 
 //获取远程文件所采用的方法 
 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($save_dir.$filename,'a'); 
 fwrite($fp2,$img); 
 fclose($fp2); 
 unset($img,$url); 
 return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); 
} 

以上内容是小编给大家分享的PHP源码批量抓取远程网页图片并保存到本地的实现方法,希望大家喜欢。

批量抓取网页图片 批量抓取网页 网页内容批量抓取