分享PHP源碼批量抓取遠程網頁圖片並儲存到本地的實現方法_php執行個體

來源:互聯網
上載者:User

做為一個仿站工作者,當遇到網站有著作權時甚至加密的時候,WEBZIP也熄火,怎麼扣取網頁上的圖片和背景圖片呢。有時候,可能會想到用Firefox,這款瀏覽器好像一個強大的BUG,文章有著作權,屏蔽右鍵,Firefox絲毫也不會被影響。

但是作為一個熱愛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源碼批量抓取遠程網頁圖片並儲存到本地的實現方法,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.