初级的用php写的采集程序
可以先用这个采集然后在用帝国处理
<?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中文本操作的类
下一篇: 这是瞎呀