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

首頁 > 語言 > PHP > 正文

php抓取網(wǎng)站圖片并保存本地服務(wù)器實例

2024-09-04 11:44:37
字體:
供稿:網(wǎng)友

本例子是使用了file_get_contents()函數(shù)來抓取圖片內(nèi)容然后再使用fopen保存到本地服務(wù)器了,然后再進(jìn)行地址url替換這樣就實現(xiàn)了一個完整的頁面采集功能并保存地址到本地的做法了,下面來看看例子.

首先舉個例子吧,代碼如下:

  1. <?php 
  2. $text=file_get_contents("http://www.survivalescaperooms.com"); 
  3. //取得所有img標(biāo)簽,并儲存至二維陣列match 
  4. preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/', $text$match); 
  5. //打印出match 
  6. $houzhui = "./tp/".time().rand(10000,50000).".".png; 
  7. $yuanname =  getImage($match[1][2],$houzhui,tp); 
  8. //下載圖片方法 
  9. function getImage($url,$filename='',$type=0){ 
  10. if($url==''){return false;} 
  11. if($filename==''){ 
  12. $ext=strrchr($url,'.'); 
  13. if($ext!='.gif' && $ext!='.jpg'){return false;} 
  14. $filename=time().$ext
  15. //文件保存路徑 
  16. if($type){ 
  17. $ch=curl_init(); 
  18. $timeout=5; 
  19. curl_setopt($ch,CURLOPT_URL,$url); 
  20. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  21. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
  22. $img=curl_exec($ch); 
  23. curl_close($ch); 
  24. }else
  25. ob_start(); 
  26. readfile($url); 
  27. $img=ob_get_contents(); 
  28. ob_end_clean(); 
  29. $size=strlen($img); 
  30. //文件大小 
  31. $fp2=@fopen($filename,'a'); 
  32. fwrite($fp2,$img); 
  33. fclose($fp2); 
  34. return $filename
  35. ?> 

案例分析,核心代碼如下:

  1. $text=file_get_contents("http://www.survivalescaperooms.com"); 
  2. //取得所有img標(biāo)簽,并儲存至二維陣列match 
  3. preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/', $text$match); 

這個正則就是直接獲取所有圖片不管是http或直接是/aa/aa.gif文件都會自動抓保存到地址了,不過這個會有一些問題圖片地址未進(jìn)行補全了,如我們一個 /a/a/a.gif這樣我們是找不到圖片的,必須是http://www.survivalescaperooms.com /a/a/a.gif 這樣才可以下載到了,所以我們有必要進(jìn)行兩個處理方法一個是在原基本上處理,代碼如下:

  1. //文件保存路徑 
  2. if($type){ 
  3. $ch=curl_init(); 
  4. $timeout=5; 
  5. curl_setopt($ch,CURLOPT_URL,$url);  
  6. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  7. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
  8. $img=curl_exec($ch); 
  9. curl_close($ch); 

上面的$url參數(shù)進(jìn)行地址補全,如我采集的是http://www.survivalescaperooms.com那么地址自動補全為絕對路徑了,另一種辦法就是使用修改正則表達(dá)式,代碼如下:

  1. preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|png))/isU",$body,$img_array);  

這樣就只獲取以http開頭的圖片文件了哦.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 辛集市| 阳城县| 贺州市| 广州市| 陇西县| 德格县| 林西县| 嘉荫县| 哈巴河县| 都江堰市| 峡江县| 长汀县| 白沙| 改则县| 芦溪县| 锡林郭勒盟| 巴林左旗| 富锦市| 花莲县| 深水埗区| 介休市| 宁晋县| 屯留县| 慈溪市| 逊克县| 云林县| 塔城市| 佳木斯市| 若羌县| 华容县| 日土县| 沧州市| 临沧市| 乐业县| 乌恰县| 商都县| 调兵山市| 沙河市| 宁都县| 嘉黎县| 八宿县|