php做的一个简易爬虫,代码参考示例
源地址 https://www.cnblogs.com/we-jack/p/8178099.html
index.php
<?php header("Content-Type:text/html;charset=utf-8"); if(isset($_GET['img']) and !empty($_GET['img'])){ include 'getimg.php'; $img=new GetImg(); $img->set('start_page',90000); $img->set('end_page',90010); $img->start_getimg(); }else{ echo "<a href='./index.php?img=1'>开始</a>"; }
getimg.php
<?php /** * 957796988@qq.com */ ini_set('implicit_flush',1); //为一个配置选项设置值 ob_implicit_flush(1); //打开绝对刷送 ob_end_clean(); //清空(擦除)缓冲区并关闭输出缓冲 date_default_timezone_set('PRC'); //初始化时区 set_time_limit(0); //设置脚本最大执行时间 class GetImg{ private $start_page=90010; //开始页数 private $end_page=91000; //结束页数 private $url='images'; //命名文件夹 public function set($key,$val){ $this->$key=$val; } /*CURL*/ private function curl_get_con($url,$https=true,$method="get",$data=null){ $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); if($https){ curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); } if($method=="post"){ curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } $str=curl_exec($ch); curl_close($ch); return $str; } /*保存图片方法*/ private function save_img($url,$dir,$i){ //创建目录 if(!is_dir($dir)){ mkdir($dir,777); } //获取内容 $res=file_get_contents($url); //命名文件 $file_name=$dir.'/'.$i.'_'.date('Ymd_His').'.jpg'; //重写 file_put_contents($file_name,$res); return $file_name; } /*获取方法*/ public function start_getimg(){ echo "<style>table{ border-collapse:collapse }tr{border:1px solid #ccc}</style> <table width='1000' border='0' cellpadding='5' cellspacing='5' ><tr width='100'><td colspan='2'>爬虫已运行:请查看".$this->url."文件夹</td></tr>"; for($i=$this->start_page+1;$i<=$this->end_page;$i++){ //爬 地址 $url="https://www.bbb290.com/htm/pic2/".$i.".htm"; //开启CURL 获取到内容 $result=$this->curl_get_con($url); //使用正则匹配内容中的 图片 preg_match_all("/https:\/\/img.*jpg/U",$result,$a); $a=$a[0]; echo "<tr><td>正在捕捉".$i."。</td><td>"; if(empty($a)){ echo "<br /> ----".$i."为空。</td></tr>"; continue; } foreach ($a as $value){ //保存图片 $file_name=$this->save_img($value,$this->url,$i); echo "<img src='".$file_name."' width='100' height='100' />"; } if($i==$this->end_page){ echo "<br /> ----".$i."捕捉结束。</td></tr>"; echo "<br />全部捕捉结束。"; break; } echo "<br /> ----".$i."捕捉结束。</td></tr>"; } } }