国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

分享一個PHP采集遠程圖片

2024-05-04 21:49:36
字體:
來源:轉載
供稿:網友

利用php來采集圖片方法很簡單本實例使用了fopen來保存文件了,但在此小編建義大家不要使用此方法來獲取,如果數據量大量fopen函數性能比curl差得遠了,所以大家可嘗試改進使用curl來處理,代碼如下:

  1. <?php  
  2. /*使用PHP實現采集遠程圖片功能。基本流程: 
  3.  
  4. 1、獲取目標網站圖片地址。 
  5.  
  6. 2、讀取圖片內容。 
  7.  
  8. 3、創(chuàng)建要保存圖片的路徑并命名圖片名稱。 
  9.  
  10. 4、寫入圖片內容。 
  11.  
  12. 5、完成。 
  13.  
  14. 我們通過寫幾個函數來實現這一過程。*/ 
  15.  
  16. //函數make_dir()建立目錄。判斷要保存的圖片文件目錄是否存在,如果不存在則創(chuàng)建目錄,并且將目錄設置為可寫權限。  
  17. function make_dir($path){  
  18.     if(!file_exists($path)){//不存在則建立  
  19.         $mk=@mkdir($path,0777); //權限  
  20.         @chmod($path,0777);  
  21.     }  
  22.     return true;  
  23.  
  24. //函數read_filetext()取得圖片內容。使用fopen打開圖片文件,然后fread讀取圖片文件內容。  
  25. function read_filetext($filepath){  
  26.     $filepath=trim($filepath);  
  27.     $htmlfp=@fopen($filepath,”r”);  
  28.     //遠程  
  29.     if(strstr($filepath,”://”)){  
  30.         while($data=@fread($htmlfp,500000)){  
  31.             $string.=$data;  
  32.         }  
  33.     }  
  34.     //本地  
  35.     else{  
  36.         $string=@fread($htmlfp,@filesize($filepath));  
  37.     }  
  38.     @fclose($htmlfp);  
  39.     return $string;  
  40.  
  41.  
  42. //函數write_filetext()寫文件,將圖片內容fputs寫入文件中,即保存圖片文件。  
  43. function write_filetext($filepath,$string){  
  44.     //$string=stripSlashes($string);  
  45.     $fp=@fopen($filepath,”w”);  
  46.     @fputs($fp,$string);  
  47.     @fclose($fp);  
  48.  
  49.  
  50. //函數get_filename()獲取圖片名稱,也可以自定義要保存的文件名。  
  51. function get_filename($filepath){  
  52.     $fr=explode(“/”,$filepath);  
  53.     $count=count($fr)-1;  
  54.     return $fr[$count];  
  55.  
  56.  
  57. //然后將幾個函數組合,在函數save_pic()中調用,最后返回保存后的圖片路徑。  
  58. function save_pic($url,$savepath=”){  
  59.     //處理地址  
  60.     $url=trim($url);  
  61.     $url=str_replace(“ ”,”%20″,$url);  
  62.     //讀文件  
  63.     $string=read_filetext($url);  
  64.     if(emptyempty($string)){  
  65.         echo ’讀取不了文件’;exit;  
  66.     }  
  67.     //文件名  
  68.     $filename = get_filename($url);  
  69.     //存放目錄  
  70.     make_dir($savepath); //建立存放目錄  
  71.     //文件地址  
  72.     $filepath = $savepath.$filename;  
  73.     //寫文件  
  74.     write_filetext($filepath,$string);  
  75.     return $filepath;  
  76.  
  77.  
  78. //最后一步就是調用save_pic()函數保存圖片,我們使用以下代碼做測試。  
  79. //目標圖片地址  
  80. //$pic = ”/1205/06/2776119_end1_thumb.jpg”;  
  81. // for($i=100; $i<=204; $i++)  
  82. // {  
  83.     // $pic = ’http://cache.soso.com/img/img/e’.$i.’.gif’;  
  84. ////保存目錄  
  85. // $savepath = ”images/”;  
  86. // echo save_pic($pic,$savepath).”<br />”;  
  87. // } 
  88.  
  89.  
  90. /*  
  91. 實際應用中,我們可能會采集某個站點的內容,比如產品信息,包括采集防盜鏈的圖片保存到網站上服務器上。這時我們可以使用正則匹配頁面內容,將頁面中相匹配的圖片都找出來,然后分別下載到網站服務器上,完成圖片的采集。以下代碼僅供測試:  
  92. */  
  93. function get_pic($cont,$path){  
  94.     $pattern_src = ’/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/’;  
  95.     $num = preg_match_all($pattern_src$cont$match_src);  
  96.     $pic_arr = $match_src[1]; //獲得圖片數組  
  97.     foreach ($pic_arr as $pic_item) { //循環(huán)取出每幅圖的地址  
  98.         save_pic($pic_item,$path); //下載并保存圖片  
  99.         echo ”[OK]..!<br />”;  
  100.     }  
  101.  
  102. //然后我們通過分析頁面內容,將主體內容找出來,調用get_pic()實現圖片的保存。 
  103.  
  104. //我們采集太平洋電腦網上一篇關于手機報道內容頁的圖片  php100.com  
  105. $url = ”你的網地址”; 
  106.  
  107. $content = file_get_contents($url);//獲取網頁內容  
  108. $preg = ’#<div class=”art_con”>(.*)<div class=”ivy620 ivy620Ex”></div>#iUs’;  
  109. preg_match_all($preg$content$arr);  
  110. $cont = $arr[1][0];  
  111. get_pic($cont,’img/’); 
  112. //開源代碼Vevb.com 
  113. /*  
  114. 以上代碼筆者親測,可以采集圖片,但是還有些場景沒考慮進去,比如目標網站做了302多次跳轉的,目標網站做了多種防采集的,留給喜歡折騰的同學去試試吧。  
  115. */  
  116. ?>

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 通许县| 兰西县| 富阳市| 钦州市| 湾仔区| 云龙县| 高邮市| 佛冈县| 西乡县| 北辰区| 大丰市| 肃宁县| 屏东市| 皋兰县| 宣武区| 合阳县| 鹤岗市| 汉源县| 五原县| 滨州市| 达日县| 连云港市| 长沙县| 南木林县| 仪征市| 本溪市| 梁山县| 土默特右旗| 贵州省| 简阳市| 赫章县| 辽宁省| 都安| 瑞丽市| 台州市| 永昌县| 水富县| 克东县| 新闻| 砚山县| 方城县|