php做的一个简易爬虫
对于爬虫的好奇好像由来已久,一直在研究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 /> ----".$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>";
}
}
}
网址貌似被河蟹了~~
php做的一个简易爬虫的更多相关文章
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务
实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...
- 一个简易的SocketIM
今天做了一个简易的socketIM的小示例.基本思想是开启两个winform,每个winform既充当服务器也充当客户端.一个监听8000端口,另外一个监听8001端口,两个winform接收到信息之 ...
- webmagic的设计机制及原理-如何开发一个Java爬虫
之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...
- 使用 HttpClient 和 HtmlParser 实现简易爬虫
这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte ...
- [转]使用 HttpClient 和 HtmlParser 实现简易爬虫
http://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ http://blog.csdn.net/dancen/article/d ...
- webmagic的设计机制及原理-如何开发一个Java爬虫 转
此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-ma ...
- 一个简易的Python全站抓取系统
很长时间没有更新博客了,前一阵时间在做项目,里面有一个爬虫系统,然后就从里面整理了一点代码做成了一个简易的爬虫系统,还挺实用的. 简单说来,这个爬虫系统的功能就是:给定初始的链接池,然后设定一些参数, ...
- 自己来实现一个简易的OCR
来做个简易的字符识别 ,既然是简易的 那么我们就不能用任何的第三方库 .啥谷歌的 tesseract-ocr, opencv 之类的 那些玩意是叼 至少图像处理 机器视觉这类课题对我这种高中没毕业的人 ...
随机推荐
- Linux常用命令(精选)
chmod -R 777 文件夹名 // -R表示递归给文件及文件夹内文件更改权限,r(4),w(2),x(1),chmod -a+rwx / chmod -u+w -g+r -o +x ...
- POJ - 1417 并查集+背包
思路:很简单的种类并查集,利用并查集可以将所有的人分成几个集合,每个集合又分为好人和坏人集合,直接进行背包dp判断有多少种方法可以在取了所有集合并且人数正好凑足p1个好人的方案.dp(i, j)表示前 ...
- LOJ6003 - 「网络流 24 题」魔术球
原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法 ...
- struts2框架概述
框架概述 什么是框架,为什么使用框架,框架优点 框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题 框架,即framework.其实就是某种应用的半成品,就是一组组件,供你 ...
- Py4j-RPC
python 使用灵活.方便在科研中被广泛的使用,Numpy和SciPy等科学计算库使其拥有强大的计算方式.很多机器学习和深度学习的库也都采用了python,然而在大数据.后台开发中仍然较多的使用Ja ...
- c#获取文件MD5算法
//获取文件MD5算法 private static string GetMD5FromFile(string fileName) { try { FileStream file = new File ...
- 判断一个jquery对象是否为空
今天用jquery $获取一个jquery对象.$("#id") 然后用判断这个对象是否存在,id不存在的时候,判断这个是否存在, if($("#id")) 始 ...
- Javascript和JQuery中常用的随机数产生函数
无论在普通Js框架或者JQuery中都可以使用的,函数如下,使用方法简介: 1)获取0-100的随机数--getRandom(100); 2)获取0-999的随机数--getRandom(999); ...
- Web站点错误提示页面和默认访问页面设置
1.asp.net 定制简单的错误处理页面 通常web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是asp.net向用户暴露出来的详细的异常列表 ...
- 从Git到GitHub,详细教程
众所周知,一个稍微有点规模的项目,都不可能是一个人单打独斗完成的(能完成的大神别打我),所以,一个高效的项目团队就需要一个NB的工具来进行有效的交流(曾经有人问我企鹅不就可以吗,我竟无言以对),今天就 ...