初级的用php写的采集程序
作者:bea
可以先用这个采集然后在用帝国处理 <?php #################################################################################### #作者:9elong #网站:个人小站不值一提 #时间:2007-01-01 #声明:仅用于学习php之用。 #功能:采集单页面图片。 #说明:3个示范表单已经写好正则用来示范。没有任何功能说明,一切都在源代码里。附加论坛图片采集正则示范 #########
可以先用这个采集然后在用帝国处理 <?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>
有用 | 无用
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- Discuz!插件:自动隐藏帖子
- 一篇不错的PHP基础学习笔记
- PHP_MySQL教程-第三天 基本函数
- PHP_MySQL教程-第二天while循环与数据库操作
- PHP_MySQL教程-第一天
- PHP 中dirname(_file_)讲解
- PHP session常见问题集锦及解决办法总结
- php中的session完全教程
- 用PHP生成html分页列表的代码
- PHP实现采集程序原理和简单示例代码
- Dedecms V3.1 生成HTML速度的优化办法
- dedecms模板标签代码官方参考
- 收集的DedeCMS一些使用经验
- dedecms防止FCK乱格式化你的代码的修改方法
- dedecms采集中可以过滤多行代码的正则表达式
- php中文本操作的类
- 火车头采集器3.0采集图文教程
- php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
- Discuz 5.0 中读取纯真IP数据库函数分析