免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1693 | 回复: 1
打印 上一主题 下一主题

PHP简单网页图片抓取类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-02 09:42 |只看该作者 |倒序浏览
使用例子
<?php
  
  include "imgCatcher.class.php";
  header('content-type:text/html;charset=utf-8');
  $catcher = New imgCatcher("http://www.oschina.net/","images","jpg");

  $catcher->get_pic();

?>

php图片抓取类
  1. <?php
  2.     class imgCatcher{

  3.         const FLODER_DIR = 'image/';
  4.         const IMG_TYPE = 'jpg|bmp|png|gif';

  5.         var $floder;
  6.         var $url;
  7.         var $type;
  8.         var $domain;
  9.         var $pic_arr;

  10.         public function __construct($url,$floder='',$type=''){
  11.             $this->url = $url;
  12.             
  13.             $url_arr = parse_url($url);

  14.             $this->domain = array_shift($url_arr);
  15.             
  16.             if(trim($floder) == ""){
  17.                 $this->folder = FLODER_DIR;
  18.             }else{
  19.                 $this->folder = $floder.'/';
  20.             }

  21.             if(trim($type)==""){
  22.                 $this->type = IMG_TYPE;
  23.             }else{
  24.                 $this->type = $type;
  25.             }
  26.             
  27.             $this->pic_arr = array();
  28.             if(!is_dir(__DIR__.'/'.$this->folder))
  29.                 mkdir(__DIR__.'/'.$this->folder);
  30.         }

  31.         public function get_pic(){
  32.             set_time_limit(0);//抓取不受时间限制  
  33.             //获取图片二进制流  
  34.             $data = self::CurlGet($this->url);  
  35.             //利用正则表达式得到图片链接  
  36.             $pattern_src = '/<img.*?src\=\"(.*\.('.$this->type.')).*?>/';//
  37.             $num = preg_match_all($pattern_src, $data, $match_src);  

  38.             $this->pic_arr=$match_src[1];//获得图片数组


  39.             $this->get_name();   

  40.             return 0;  
  41.         }

  42.         public function get_name(){  
  43.             $pic_arr = $this->pic_arr;
  44.             
  45.             //图片编号和类型  
  46.             $pattern_type = '/.*\/(.*?)$/';  
  47.             
  48.             foreach($pic_arr as $pic_item){//循环取出每幅图的地址  
  49.             
  50.                 $num = preg_match_all($pattern_type,$pic_item,$match_type);  
  51.                 //以流的形式保存图片  
  52.                 $write_fd = fopen($this->folder.$match_type[1][0],"wb");  

  53.                 fwrite($write_fd, self::CurlGet($pic_item,$this->url));  
  54.                 fclose($write_fd);  
  55.             }

  56.             return 0;  
  57.         }


  58.          //抓取网页内容  
  59.         static function CurlGet($url,$domain=""){
  60.             if(substr($url, 0, 1) == "/"){
  61.                 $url =  $domain.$url;
  62.             }

  63.             if(substr($url, 0, 1) == "."){
  64.                 $url =  $domain.substr($url, 1);
  65.             }

  66.             if(substr($url, 0, 2) == ".."){
  67.                 $url =  $domain.substr($url, 2);
  68.             }           
  69.             $url=str_replace('&','&',$url);  
  70.             $curl = curl_init();  
  71.             curl_setopt($curl, CURLOPT_URL, $url);  
  72.             curl_setopt($curl, CURLOPT_HEADER, false);  
  73.             
  74.             //curl_setopt($curl, CURLOPT_REFERER,$url);  
  75.             curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)");  
  76.             curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');  
  77.             curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');  
  78.             curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
  79.             curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);  
  80.             $values = curl_exec($curl);  
  81.             curl_close($curl);  
  82.             return $values;  
  83.         }     

  84.     }


  85. ?>
复制代码

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-07-10 10:13 |只看该作者
自动保存到本地硬盘了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP