当前位置:首页 > PHP教程 > php图像处理 > 列表

php抓取并保存网站图片的实现代码

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-23 18:47:41 浏览: 评论:0 

这篇文章主要介绍了php抓取并保存网站图片的实现代码,网页源代码捕获,图片链接获取、分析、并将同样的图片链接合并功能,功能很全面,需要的朋友可以参考下。

此程序实现了网页源代码捕获,图片链接获取、分析、并将同样的图片链接合并功能,实现了图片抓取功能。利用php强大的网络内容处理函数将指定的网站上的所有图片抓取下来,保存在当前目录下,以下为代码:

  1. /*完成网页内容捕获功能*/ 
  2. function get_img_url($site_name){  
  3.  $site_fd = fopen($site_name"r");  
  4.  $site_content = "";  
  5.  while (!feof($site_fd)) {  
  6.   $site_content .= fread($site_fd, 1024);  
  7.  }  
  8.  /*利用正则表达式得到图片链接*/ 
  9.  $reg_tag = '//';  
  10.  $ret = preg_match_all($reg_tag$site_content$match_result);  
  11.  fclose($site_fd);  
  12.  return $match_result[1];  
  13. }  
  14.    
  15. /* 对图片链接进行修正 */ 
  16. function revise_site($site_list$base_site){  
  17.  foreach($site_list as $site_item) {  
  18.   if (preg_match('/^http/'$site_item)) {  
  19.    $return_list[] = $site_item;  
  20.   }else{  
  21.    $return_list[] = $base_site."/".$site_item;  
  22.  }  
  23.  }  
  24.  return $return_list;  
  25. }  
  26.    
  27. /*得到图片名字,并将其保存在指定位置*/ 
  28. function get_pic_file($pic_url_array$pos){  
  29.  $reg_tag = '/.*\/(.*?)$/';  
  30.  $count = 0;  
  31.  foreach($pic_url_array as $pic_item){  
  32.   $ret = preg_match_all($reg_tag,$pic_item,$t_pic_name);  
  33.   $pic_name = $pos.$t_pic_name[1][0];  
  34.   $pic_url = $pic_item;  
  35.  print("Downloading ".$pic_url." ");  
  36.   $img_read_fd = fopen($pic_url,"r");  
  37.   $img_write_fd = fopen($pic_name,"w");  
  38.   $img_content = "";  
  39.   while(!feof($img_read_fd)){  
  40.    $img_content .= fread($img_read_fd,1024);  
  41.      
  42.   }  
  43.   fwrite($img_write_fd,$img_content);  
  44.   fclose($img_read_fd);  
  45.   fclose($img_write_fd);  
  46.   print("[OK] ");  
  47.  }  
  48.  return 0;  
  49. }  
  50.    
  51. function main(){  
  52. /* 待抓取图片的网页地址 */ 
  53.  $site_name = "https://www.phpfensi.com/";  
  54.  $img_url = get_img_url($site_name);  
  55.  $img_url_revised = revise_site($img_url$site_name);  
  56.  $img_url_unique = array_unique($img_url_revised); //unique array  
  57.  get_pic_file($img_url_unique,"./");  
  58. }  
  59.    
  60. main();  
  61. ?> 

此程序还有待完善的地方是,如果图片在网站服务器上不同目录下但文件名是相同的,此时图片有可能是不一样的,但在最后保存时,后面得到的图片会将前面已经保存的图片覆盖掉,解决方法是在每次保存前先检索当前目录下是否已有此文件名,有的话对将要保存的图片重新命名即可。

Tags: php抓取图片 php保存图片

分享到: