对于爬虫的好奇好像由来已久,一直在研究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. MySQL的InnoDB引擎与MyISAM引擎

    MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与 ...

  2. dubbox系列【二】——dubbox admin环境搭建

    1.环境 JDK7+ zookeeper 3.3.6 tomcat 7+ 2.搭建步骤 (1)安装zookeeper 单机模式:参考这里. 伪集群模式:参考这里. ①单机或伪集群模式均可. ②笔者使用 ...

  3. hihoCoder 1513 : 小Hi的烦恼 位运算好题

    思路:考虑第i个同学,第一门课排名比他靠前的同学的集合是S1,第二门课是S2...第五门课是S5,很明显比这个同学每门课程都优秀的同学就是S1&S2&S3&S4&S5, ...

  4. A.Alyona and copybooks

    这题考查思维的全面性. 一开始我直接分类推公式,余数不同分类讨论. AC代码: #include<cstdio> #include<algorithm> using names ...

  5. spring boot admin + spring boot actuator + erueka 微服务监控

    关于spring boot actuator简单使用,请看 简单的spring boot actuator 使用,点击这里 spring boot admin 最新的正式版本是1.5.3 与 spri ...

  6. java复习

    局部变量的作用域只在方法内部有效,在方法外无效 用类型作为形参传递会改变实参的值,但是String是特殊的引用类型,作为形参传递不会影响实参的值. HashMap非线程安全,在多个线程访问Hashta ...

  7. Java循环和条件

    下列程序的输出结果是什么? 1.Java循环和条件 /** * @Title:IuputData.java * @Package:com.you.data * @Description:TODO * ...

  8. Django学习-14-分页功能实例

    首先创建一个制作page的工具类                     utils                         --page_make.py                    ...

  9. POJ 2104 K-th Number 主席树

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...

  10. How to verify Certificate Pinning?

    Some friends of mine they worry about the risk of Man-in-the-middle so they ask me how to verify the ...