-
-
function make_dir($path){
- if(!file_exists($path)){//不存在則建立
- $mk=@mkdir($path,0777); //權限
- @chmod($path,0777);
- }
- return true;
- }
複製程式碼
函數read_filetext()取得圖片內容。
使用fopen開啟圖片文件,然後fread讀取圖片檔案內容。
-
-
function read_filetext($filepath){
- $filepath=trim($filepath);
- $htmlfp@ fopen($filepath,"r");
- //遠端
- if(strstr($filepath,"://")){
- while($data=@fread($htmlfp,500000) ){
- $string.=$data;
- }
- }
- //本地
- else{
- $string=@fread($htmlfp,@filesize($filepath)) ;
- }
- @fclose($htmlfp);
- return $string;
- }
複製程式碼
複製程式碼
函數- 複製程式碼
-
-
- 函數
- 函式寫入文件,將圖片內容fputs寫入文件中,即儲存圖片檔案。
-
-
-
-
function write_filetext($filepath,$string){ //$string=stripSlashes($string); > $fp=@fopen($filepath,"w"); @fputs($fp,$string); @fclose($fp); }
- 複製程式碼
-
-
- 函數get_filename()取得圖片名稱,也可以自訂要儲存的檔案名稱。
-
-
-
function get_filename($filepath){
$fr=explode("/",$filepath); $count=count($fr)-1; return $fr[$count]; }
- 複製程式碼
-
-
- 然後,將幾個函數組合,在函數save_pic()中調用,最後返回已儲存的圖片路徑。
-
-
-
-
-
-
function save_pic($url,$savepath=''){
- //處理位址
- $url= trim($url);
- $url=str_replace(" ","%20",$url);
- //讀取檔案
- $string=read_filetext($url);
- if( empty($string)){
- echo '讀取不了檔案';exit;
- }
- //檔名
- $filename = get_filename($url);
//存放目錄 make_dir($savepath); //建立存放目錄 //檔案位址 $filepath = $savepath.$filename; //寫入檔案 write_filetext($filepath,$string ); return $filepath; }
- 複製程式碼
-
-
- 最後一步,呼叫save_pic()函數儲存圖片,使用以下程式碼做測試。
-
-
-
-
//目標圖片位址$pic = "http://img0.pconline.com.cn/pconline/ 1205/06/2776119_end1_thumb.jpg"; //保存目錄$savepath = "images/"; echo save_pic($pic,$savepath);
複製代碼
-
- 實際應用中,可能會採集某個站點的內容,比如產品信息,包括採集防盜鏈的圖片保存到網站上服務器上。
這時可以使用正規比對頁面內容,將頁面中相符的圖片都找出來,然後分別下載到網站伺服器上,完成圖片的採集。
-
- 測試範例:
-
-
-
-
-
-
function get_pic($cont,$path){
- $pattern_src = '//';
$num = preg_match_all($pattern_src , $cont, $match_src); $pic_arr = $match_src[1]; //取得圖片陣列 foreach ($pic_arr as $pic_item) { //循環取出每張圖的位址 save_pic ($pic_item,$path); //下載並儲存圖片 echo "[OK]..!"; } }
- 複製程式碼
-
-
- 然後,透過分析頁面內容,將主體內容找出來,呼叫get_pic()實現圖片的保存。
-
-
-
-
-
-
//採集太平洋電腦網路上一篇關於手機報道內容頁的圖片
$url = "http:// gz.pconline.com.cn/321/3215791.html"; $content = file_get_contents($url);//取得網頁內容$preg = '# preg_match_all($preg, $content, $arr); $cont = $arr[1][0 ]; get_pic($cont,'img/'); 複製程式碼 以上代碼筆者親測,可以採集圖片,但是還有些場景沒考慮進去,比如目標網站做了302多次跳轉的,目標網站做了多種防採集的,大家自行研究下吧。
|