初级的用php写的采集程序


Posted in PHP onMarch 16, 2007

可以先用这个采集然后在用帝国处理
<?php
####################################################################################
#作者:9elong
#网站:个人小站不值一提
#时间:2007-01-01
#声明:仅用于学习php之用。
#功能:采集单页面图片。
#说明:3个示范表单已经写好正则用来示范。没有任何功能说明,一切都在源代码里。附加论坛图片采集正则示范
####################################################################################
//把图片从信息页抓取下来的函数
function  getimg($url,$n,$key,$imgqian,$imgbiao,$titlekey)
{
                //$key图片地址正则
                //$titlekey图片标题正则
                //$imgqian图片地址前缀
                //$imgbiao图片地址特殊标识
                global  $n;
                global  $msg;
                global  $result;
                global  $imgadd;
                global  $title;
                $msg=file_get_contents($url);
                $key=str_replace("{图片地址}","(.+)",$key);
                $key="|".$key."|isU";
                preg_match_all($key,$msg,$result);
                $c=count($result[0]);
                for($i=0;$i<$c;$i++)
                {
                                $img=$result[0][$i]."<br>";
                                if(ereg("^.*".$imgbiao.".*$",$img))
                                {
                                                $img=str_replace($imgbiao,$imgqian.$imgbiao,$img);
                                                preg_match("|http://(.+)jpg|isU",$img,$img);
                                                $imgadd[$n]=$img[0];
                                                //echo  "<img  src=".($img[0])."><br>";
                                                $n++;
                                }
                                elseif(ereg("^.*jpg.*$",$img))
                                {
                                                preg_match("|http://(.+)jpg|isU",$img,$img);
                                                $imgadd[$n]=$img[0];
                                                if($img[0]!="")
                                                $n++;
                                }
                                unset($img);
                }                                
                                $titlekey=str_replace("{图片标题}","(.+)",$titlekey);
                                $titlekey="|".$titlekey."|isU";
                                preg_match($titlekey,$msg,$title);
                                //echo  $title[0];
                                return  $title;
                return  $msg;
                return  $result;
                return  $n;
                return  $imgadd;
}
####################################################################################
#不支持file_get_contents()函数可以使用下面的替换
#$i=0;
#$handle=@fopen($url,"rb");
#while  (!@feof($handle))
#{
#                $buffer[$i]=  @fgets($handle,  4096);
#                $i++;
#}
#fclose($handle);
#$msg=join("",$buffer);
####################################################################################
if($_GET['act']=="getimgadd"&&$_POST['url']!="")
{
                $url=$_POST['url'];
        getimg($url,"0",$_POST['key'],$_POST['imgqian'],$_POST['imgbiao'],$_POST['titlekey']);
####################################################################################
        //获取分页
                if($_POST['getpage']=="是")
        {
                                $_POST['page']=str_replace("{分页地址}","(.+)",$_POST['page']);
                $page="|".$_POST['page']."|isU";
                //echo  $page;
        preg_match_all($page,$msg,$presult);
                if($_POST['pc']==""||$_POST['pc']=="全部")
                        $pc=count($presult[0]);
                else
                                $pc=$_POST['pc'];
                if($_POST['pc']>count($presult[0]))
                                $pc=count($presult[0]);
                for($i=1;$i<$pc;$i++)
                {
                                $pageurl=$presult[0][$i];
                                //echo  $pageurl."<br>";
                                if(ereg("^.*[1-9].*$",$pageurl))
                                {
                                                $pageurl=str_replace("<a  href="","<a  href="".$_POST['imgqian'],$pageurl);
                                                $pagekey=str_replace("{关键地址}","(.+)",$_POST['pagekey']);
                                                $pagekey="|".$pagekey."|isU";
                                                preg_match($pagekey,$pageurl,$N3[$i]);
                                                //echo  ($N3[$i][0])."<br>";
                                                getimg($N3[$i][0],$n,$_POST['key'],$_POST['imgqian'],$_POST['imgbiao'],$_POST['titlekey']);
                                }
                }
        }
####################################################################################
        echo  "图片集〖".$title[1]."〗".$n."张图片被抓取<br><a  href='?act='>返回首页</a><br>";

                while(list($num,$var)=each($imgadd))
                {
                                if($_POST['showtype']=="图片")
                                {
                                                echo  "<img  src='".$var."'><br>";
                                }
                                else
                                echo  $var."<br>";
                }
####################################################################################
                //exit();
}
?>
实例1(信息页有分页,使用了简单的分页正则):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
输入图片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://www.pp132.com/n835c17.shtml'><br>
图片地址正则<INPUT  TYPE="text"  NAME="key"  size=80  value='<img{图片地址}>'><br>
图片地址前缀<INPUT  TYPE="text"  NAME="imgqian"  size=80  value='http://www.pp132.com/'><br>
图片地址标识<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='upload'><br>
图片标题正则<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<H1  class=aTitle>{图片标题}</H1></DIV>'><br>
分页地址正则<INPUT  TYPE="text"  NAME="page"  size=80  value='<a  href="{分页地址}shtml">.[0-9]'><br>
分页地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value='http://{关键地址}shtml'><br>
<SELECT  NAME="getpage">
<option  value="是"    selected="selected">获取分页信息</option>
<option  value="否">不要分页信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">获取1页</option>
<option  value="2">获取2页</option>
<option  value="3">获取3页</option>
<option  value="4">获取4页</option>
<option  value="5">获取5页</option>
<option  value="全部">获取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="图片"    selected="selected">直接显示图片</option>
<option  value="文字">直接显示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>
实例2(信息页没有分页,所以分页正则为空):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
输入图片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://zy.muwen.com/pic/89/2007/01/01/131721.htm'><br>
图片地址正则<INPUT  TYPE="text"  NAME="key"  size=80  value='<IMG  src="/UpLoad{图片地址}jpg"'><br>
图片地址前缀<INPUT  TYPE="text"  NAME="imgqian"  size=80  value='http://zy.muwen.com/'><br>
图片地址标识<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='UpLoad'><br>
图片标题正则<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<span  id="_ctl0_TitleLabel"  class="Title">{图片标题}</span></TD>'><br>
分页地址正则<INPUT  TYPE="text"  NAME="page"  size=80  value=''><br>
分页地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value=''><br>
<SELECT  NAME="getpage">
<option  value="是">获取分页信息</option>
<option  value="否"    selected="selected">不要分页信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">获取1页</option>
<option  value="2">获取2页</option>
<option  value="3">获取3页</option>
<option  value="4">获取4页</option>
<option  value="5">获取5页</option>
<option  value="全部">获取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="图片"    selected="selected">直接显示图片</option>
<option  value="文字">直接显示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>
实例3(信息页没有分页,所以分页正则为空,图片为绝对地址,所以图片地址前缀为空):
<FORM  METHOD=POST  ACTION="?act=getimgadd">
输入图片地址<INPUT  TYPE="text"  NAME="url"  size=80  value='http://www.6642.com/Disp/9936.htm'><br>
图片地址正则<INPUT  TYPE="text"  NAME="key"  size=80  value='<P><IMG{图片地址}"></P>'><br>
图片地址前缀<INPUT  TYPE="text"  NAME="imgqian"  size=80  value=''><br>
图片地址标识<INPUT  TYPE="text"  NAME="imgbiao"  size=80  value='UpLoad'><br>
图片标题正则<INPUT  TYPE="text"  NAME="titlekey"  size=80  value='<div  align="right"><b>{图片标题}</b></div></td>'><br>
分页地址正则<INPUT  TYPE="text"  NAME="page"  size=80  value=''><br>
分页地址模式<INPUT  TYPE="text"  NAME="pagekey"  size=80  value=''><br>
<SELECT  NAME="getpage">
<option  value="是">获取分页信息</option>
<option  value="否"    selected="selected">不要分页信息</option>
</SELECT><br>
<SELECT  NAME="pc">
<option  value="1"    selected="selected">获取1页</option>
<option  value="2">获取2页</option>
<option  value="3">获取3页</option>
<option  value="4">获取4页</option>
<option  value="5">获取5页</option>
<option  value="全部">获取全部</option>
</SELECT><br>
<SELECT  NAME="showtype">
<option  value="图片"    selected="selected">直接显示图片</option>
<option  value="文字">直接显示地址</option>
</SELECT><br>
<INPUT  TYPE="submit">
</FORM><br>

华声论坛图片为附件http://bbs.hnol.net/dispbbs2.asp?boardID=50&ID=336436

图片地址正则:upload=jpg{图片地址}upload

图片地址标识:bbs

图片标题正则:帖子主题</B>:{图片标题}</th>

华声论坛图片为外链http://bbs.hnol.net/dispbbs2.asp?boardID=50&ID=336253

图片地址正则:img]{图片地址}/img

图片地址标识:jpg

图片标题正则:帖子主题</B>:{图片标题}</th>

PHP 相关文章推荐
php桌面中心(二) 数据库写入
Mar 11 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
php-fpm配置详解
Feb 12 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
smarty简单应用实例
Nov 03 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
php好代码风格的阶段性总结
Jun 25 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
php下使用无限生命期Session的方法
Mar 16 #PHP
随时给自己贴的图片加文字的php水印
Mar 16 #PHP
php的一个登录的类 [推荐]
Mar 16 #PHP
对Session和Cookie的区分与解释
Mar 16 #PHP
PHP中cookies使用指南
Mar 16 #PHP
PHP学习资料汇总与网址
Mar 16 #PHP
PHP编码规范-php coding standard
Mar 16 #PHP
You might like
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
js实现弹窗暗层效果
2017/01/16 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
js实现随机8位验证码
2020/07/24 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Ubuntu下安装PyV8
2016/03/13 Python
解决Python3下map函数的显示问题
2019/12/04 Python
新手学python应该下哪个版本
2020/06/11 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
医院护士专业个人的求职信
2013/12/09 职场文书
2014政务公开实施方案
2014/02/19 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android