用dz搞了个论坛,写了个采集,是那种发帖回帖都采集的效果,个人感觉很完美了。美中不足是采集器自动注册用户的时候除了会发帖回帖 其他信息全是空的 比如个人资料和头像研究了下头像部分 发现其实采集需要大中小三个图都采集过来 以下是dz官网的头像链接
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_big.jpg
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_middle.jpg
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_small.jpg/001/47/69/83这是头像的所在目录 其实是用户的ID号1476983也就是说一个ID是123的话会自动换算成/000/00/01/23的格式来保存并且被采集的论坛上头像也不是所有用户都有 所以采集的序列并不是从1-999999999但是保存到自己的站上要从1开始排序 这样才能保证所有用户都有头像把ID转换成9位数再变成路径的代码$i = 1;
do{
$pwd = $i;
$pwd = str_pad($pwd,9,"0",STR_PAD_LEFT);
$pwd = trim(preg_replace('/^\d{1,3}|\d{2}/', '$0/', $pwd), '/');
echo $pwd . "<br/>";
$i++;
}
while($i < 1000);
再来发保存远程图片的代码
function get_file($url,$folder,$pic_name){
set_time_limit(24*60*60); //限制最大的执行时间
$destination_folder=$folder?$folder.'/':''; //文件下载保存目录
$newfname=$destination_folder.$pic_name;//文件PATH
$file=fopen($url,'rb');
if($file){
$newf=fopen($newfname,'wb');
if($newf){
while(!feof($file)){
fwrite($newf,fread($file,1024*8),1024*8);
}
}
if($file){
fclose($file);
}
if($newf){
fclose($newf);
}
}
}
get_file("http://uc.discuz.net/data/avatar/000/00/08/59_avatar_middle.jpg","./file","baidu.jpg");
但是怎么合成到一起呢?
还有呃 如何做每1000自我刷新一次?不然就卡死啦!
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_big.jpg
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_middle.jpg
http://uc.discuz.net/data/avatar/001/47/69/83_avatar_small.jpg/001/47/69/83这是头像的所在目录 其实是用户的ID号1476983也就是说一个ID是123的话会自动换算成/000/00/01/23的格式来保存并且被采集的论坛上头像也不是所有用户都有 所以采集的序列并不是从1-999999999但是保存到自己的站上要从1开始排序 这样才能保证所有用户都有头像把ID转换成9位数再变成路径的代码$i = 1;
do{
$pwd = $i;
$pwd = str_pad($pwd,9,"0",STR_PAD_LEFT);
$pwd = trim(preg_replace('/^\d{1,3}|\d{2}/', '$0/', $pwd), '/');
echo $pwd . "<br/>";
$i++;
}
while($i < 1000);
再来发保存远程图片的代码
function get_file($url,$folder,$pic_name){
set_time_limit(24*60*60); //限制最大的执行时间
$destination_folder=$folder?$folder.'/':''; //文件下载保存目录
$newfname=$destination_folder.$pic_name;//文件PATH
$file=fopen($url,'rb');
if($file){
$newf=fopen($newfname,'wb');
if($newf){
while(!feof($file)){
fwrite($newf,fread($file,1024*8),1024*8);
}
}
if($file){
fclose($file);
}
if($newf){
fclose($newf);
}
}
}
get_file("http://uc.discuz.net/data/avatar/000/00/08/59_avatar_middle.jpg","./file","baidu.jpg");
但是怎么合成到一起呢?
还有呃 如何做每1000自我刷新一次?不然就卡死啦!
$i = 1;
do{
$pwd = $i;
$pwd = str_pad($pwd,9,"0",STR_PAD_LEFT);
$pwd = trim(preg_replace('/^\d{1,3}|\d{2}/', '$0/', $pwd), '/');
echo $pwd . "<br/>";
$i++;
get_file("http://uc.discuz.net/data/avatar/".$pwd."_avatar_middle.jpg","./file","baidu.jpg");
if($i mod 1000 == 0)
sleep(5);
}
while($i < 1000);
$url=$_GET['url'];
$dir=$_GET['dir'];
$uid=$_GET['uid'];
$time=$_GET['time'];
if(empty($time)){$time=0.1;}
$mixuid=$_GET['mixuid'];$my404=file_get_contents("http://uc.discuz.net/data/avatar/1");
function createdir($dir){//创建文件夹
$edir = explode('/',$dir);
for($i=0;$i<count($edir);$i++){
$edirm = $edir[0];
for($ii=1;$ii<=$i;$ii++){
$edirm = $edirm.'/'.$edir[$ii];
}
if(file_exists($edirm) && is_dir($edirm)){
}else{
@mkdir ($edirm,0777);
}
}
}
$uids=$uid+1;
if(empty($mixuid)){
echo <<<ETO
<html>
<body><form name="search_form">
UC地址:<input size="24" name="url" value="http://uc.discuz.net">末尾不要带/<br />
头像保存目录:<input size="24" name="dir" value="touxiang/">末尾要带/<br />
开始UID:<input size="14" name="uid" value="1"><br />
结束UID:<input size="14" name="mixuid" value="100"><br />
采集间隔:<input size="14" name="time" value="1"><br />
<input type="submit" value="开始采集" ><br />
</from>
</body>
</html>
ETO;
echo file_get_contents('touxiang_log.txt');
}else{
if($uid<=$mixuid){
echo <<<ETO
<html>
<body>
<meta http-equiv="refresh" content="$time;url=?url=$url&dir=$dir&time=$time&uid=$uids&mixuid=$mixuid">
ETO; //使用正则转换头像ID规则
$Uid=substr('00000000'.$uid,-9,9);
$img_id=preg_replace("/(\d{3})(\d{2})(\d{2})(\d{2})/i","$1/$2/$3/$4",$Uid); //头像地址规则
$img_small=$img_id.'_avatar_small.jpg';
$img_middle=$img_id.'_avatar_middle.jpg';
$img_big=$img_id.'_avatar_big.jpg'; //设置头像绝对地址
$img_url_small=$url.'/data/avatar/'.$img_small;
$img_url_middle=$url.'/data/avatar/'.$img_middle;
$img_url_big=$url.'/data/avatar/'.$img_big; //采集头像
$img_file_small=file_get_contents($img_url_small);
$img_file_middle=file_get_contents($img_url_middle);
$img_file_big=file_get_contents($img_url_big); createdir(dirname($dir.$img_small));//创建头像目录,反之无权限写入 //保存头像
if($img_file_small==$my404){
echo $img_url_small.'采集失败<br />';
}else{
file_put_contents($dir.$img_small, $img_file_small);
echo $img_url_small.'采集成功<br /><img src="'.$dir.$img_small.'"><br /><br /><br />';
}
if($img_file_middle==$my404){
echo $img_url_middle.'采集失败<br />';
}else{
file_put_contents($dir.$img_middle, $img_file_middle);
echo $img_url_middle.'采集成功<br /><img src="'.$dir.$img_middle.'"><br /><br /><br />';
}
if($img_file_big==$my404){
echo $img_url_big.'采集失败<br />';
}else{
file_put_contents($dir.$img_big, $img_file_big);
echo $img_url_big.'采集成功<br /><img src="'.$dir.$img_big.'"><br /><br /><br />';
} file_put_contents('touxiang_log.txt', '最后采集头像UID:'.$uid);//记录最后采集ID
echo <<<ETO</body>
</html>
ETO;
}else{
header("Location: ".$_SERVER['SCRIPT_NAME']);
}
}
?>