• 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 }

    网址貌似被河蟹了~~ 

  • 相关阅读:
    Eclipse背景颜色修改
    Android动画效果translate、scale、alpha、rotate详解
    代理上网的方法
    ubuntu系统使用SSH免密码登陆
    Git的思想和基本工作原理
    GitHub详细教程
    Ubuntu和Redhat(Debian)的差别
    T2: 一种能累积计算积分的EC2实例类型
    win server 2008 r2 iis+php 500错误内部服务器错误。
    从OTF字体文件里查找字体名称
  • 原文地址:https://www.cnblogs.com/we-jack/p/8178099.html
Copyright © 2020-2023  润新知