php做的一个简易爬虫

对于爬虫的好奇好像由来已久,一直在研究python的爬虫,今天得空研究研究php的爬虫

index.php

 1 <?php
 2     header("Content-Type:text/html;charset=utf-8");
 3     if(isset($_GET['img']) and !empty($_GET['img'])){
 4         include 'getimg.php';
 5         $img=new GetImg();
 6         $img->set('start_page',90000);
 7         $img->set('end_page',90010);
 8         $img->start_getimg();
 9     }else{
10         echo "<a href='./index.php?img=1'>开始</a>";
11     }

getimg.php

  1 <?php
  2 /**
  3  * 957796988@qq.com
  4  */
  5 ini_set('implicit_flush',1);     //为一个配置选项设置值
  6 ob_implicit_flush(1);  //打开绝对刷送
  7 ob_end_clean();  //清空(擦除)缓冲区并关闭输出缓冲
  8 date_default_timezone_set('PRC');  //初始化时区
  9 set_time_limit(0);        //设置脚本最大执行时间
 10 
 11 class GetImg{
 12 
 13     private     $start_page=90010;       //开始页数
 14     private        $end_page=91000;        //结束页数
 15     private     $url='images';                    //命名文件夹
 16 
 17     public function set($key,$val){
 18 
 19         $this->$key=$val;
 20     }
 21     
 22     /*CURL*/
 23     private function curl_get_con($url,$https=true,$method="get",$data=null){
 24         $ch=curl_init();
 25 
 26         curl_setopt($ch,CURLOPT_URL,$url);
 27 
 28         curl_setopt($ch,CURLOPT_HEADER,false);
 29 
 30         curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 31 
 32         if($https){
 33             curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
 34 
 35             curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
 36         }
 37 
 38         if($method=="post"){
 39             curl_setopt($ch,CURLOPT_POST,true);
 40 
 41             curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
 42         }
 43 
 44         $str=curl_exec($ch);
 45 
 46         curl_close($ch);
 47 
 48         return $str;
 49     }
 50 
 51 /*保存图片方法*/
 52     private function save_img($url,$dir,$i){
 53         //创建目录
 54         if(!is_dir($dir)){
 55             mkdir($dir,777);
 56         }
 57         //获取内容
 58         $res=file_get_contents($url);
 59         //命名文件
 60         $file_name=$dir.'/'.$i.'_'.date('Ymd_His').'.jpg';
 61         //重写
 62         file_put_contents($file_name,$res);
 63         return $file_name;
 64     }
 65 
 66 
 67 
 68 /*获取方法*/
 69     public function start_getimg(){
 70 
 71         echo "<style>table{ border-collapse:collapse }tr{border:1px solid #ccc}</style>
 72         <table width='1000' border='0' cellpadding='5' cellspacing='5' ><tr width='100'><td colspan='2'>爬虫已运行:请查看".$this->url."文件夹</td></tr>";
 73         for($i=$this->start_page+1;$i<=$this->end_page;$i++){
 74             //爬 地址
 75             $url="https://www.bbb290.com/htm/pic2/".$i.".htm";
 76             //开启CURL 获取到内容
 77             $result=$this->curl_get_con($url);
 78             //使用正则匹配内容中的 图片
 79             preg_match_all("/https:\/\/img.*jpg/U",$result,$a);
 80 
 81             $a=$a[0];
 82 
 83             echo "<tr><td>正在捕捉".$i."。</td><td>";
 84 
 85             if(empty($a)){
 86                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$i."为空。</td></tr>";
 87                 continue;
 88             }
 89 
 90             foreach ($a as $value){
 91                 //保存图片
 92                  $file_name=$this->save_img($value,$this->url,$i);
 93                  echo "<img src='".$file_name."' width='100' height='100' />";
 94             }
 95             if($i==$this->end_page){
 96                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$i."捕捉结束。</td></tr>";
 97                 echo "<br />全部捕捉结束。";
 98                 break;
 99             }
100             echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$i."捕捉结束。</td></tr>";
101         }
102     }
103 }

网址貌似被河蟹了~~ 

posted @ 2018-01-02 17:16  Solo李  阅读(1646)  评论(0编辑  收藏  举报