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

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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$i."捕捉结束。</td></tr>";
echo "<br />全部捕捉结束。";
break;
}
echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----".$i."捕捉结束。</td></tr>";
}
}
}

网址貌似被河蟹了~~

php做的一个简易爬虫的更多相关文章

  1. 做了一个简易的git 代码自动部署脚本

    做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08)   阅读(200 ...

  2. 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务

    实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...

  3. 一个简易的SocketIM

    今天做了一个简易的socketIM的小示例.基本思想是开启两个winform,每个winform既充当服务器也充当客户端.一个监听8000端口,另外一个监听8001端口,两个winform接收到信息之 ...

  4. webmagic的设计机制及原理-如何开发一个Java爬虫

    之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...

  5. 使用 HttpClient 和 HtmlParser 实现简易爬虫

    这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte ...

  6. [转]使用 HttpClient 和 HtmlParser 实现简易爬虫

    http://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ http://blog.csdn.net/dancen/article/d ...

  7. webmagic的设计机制及原理-如何开发一个Java爬虫 转

    此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-ma ...

  8. 一个简易的Python全站抓取系统

    很长时间没有更新博客了,前一阵时间在做项目,里面有一个爬虫系统,然后就从里面整理了一点代码做成了一个简易的爬虫系统,还挺实用的. 简单说来,这个爬虫系统的功能就是:给定初始的链接池,然后设定一些参数, ...

  9. 自己来实现一个简易的OCR

    来做个简易的字符识别 ,既然是简易的 那么我们就不能用任何的第三方库 .啥谷歌的 tesseract-ocr, opencv 之类的 那些玩意是叼 至少图像处理 机器视觉这类课题对我这种高中没毕业的人 ...

随机推荐

  1. API token for Github

    1.如图所示:(前提是登录Github,进入Personal settings) 2,创建token 3,生成token 4. Last login: Mon Dec  5 20:24:18 on c ...

  2. 利用alias在Linux下设置命令别名

    alias          //自定义命令="Linux命令"   alias          //查看当前系统里所有的自定义命令 unalias         //自定义命 ...

  3. Photoshop CC 常用快捷方法有哪些?

    Photoshop CC 常用快捷方法有哪些? 属性栏 工具栏 控制面板 绘图区 1. 多个图层如何快速居中? 在 控制面板 中选中多个图层创建 链接图层 在 工具栏 选择 移动工具 在 属性栏 点击 ...

  4. nyoj585 取石子(六) Nimm博弈

    此题数据十分极限,需要优化,否则会超时.关于此题的不足:明明说的每堆石子数不超过100,我开一个105大小的数组想用哈希居然Runtime Error!! 后来看见有人说需要优化输入: void in ...

  5. linux_group总结

    group_name:passwd:GID:user_list 在/etc/group 中的每条记录分四个字段: 第一字段:用户组名称: 第二字段:用户组密码: 第三字段:GID 第四字段:用户列表, ...

  6. B+索引、Hash索引、数据类型长度

    1.为什么在数据库中要用B树索引而不是Hash索引? Mysql Hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这 ...

  7. iOS 开发之字典写入文件

    在最近的开发中阿,遇到一个问题,是我开始没有注意到的问题,某个羡慕后期维护的过程中发现一个bug,这个bug就是关于字典写入文件的.缘由是这样的,我用字典写入文件的方法 BOOL result = [ ...

  8. 关于编译FFMPEG的初级教程

    首先我们要下载相关工具,这里不多说,大家按照我的地址去下载文件就好了 MINGW下载地址:http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1. ...

  9. java注解之二

    从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用Annotation,开发人员可 ...

  10. 【php】strtr与str_replace的区别

    strtr(string,from,to): 逐个字符开始替换,以from跟to中长度较较短的一个为准,例如: strtr("aidenliu","ai",&q ...