+ -
当前位置:首页 → 问答吧 → 我也来个跳转式采集

我也来个跳转式采集

时间:2009-01-02

来源:互联网

我的新年第一帖,发个采集太平洋图库图片的小程序,请大家多多指教。
采集地址:http://photo.pclady.com.cn/type/1/1.html
我作了一下解释,方便大家阅读,以便交流。程序如下:
运行这个页面(page.php)就可以了 [php]<?php/** * Author: 蓝色夏威夷 * date: Mon Dec 15 14:57:01 CST 2008 * Email:[email protected]  * QQ:415961641思路如下:1.根据所传入的地址来解析这个页面,得到这页面的25个图片主题地址2.把主题地址和缩略图地址传到array页面3.array页面解决出图片地址并传到pic页面4.pic页面来采集图片,采集完之后转到array页面让其提供下一组图片地址。5.array页面的各组图片采集完后再回到page页面 重复操作。*///只要运行这个文件就可以了。session_start();$page = isset($_GET['page']) ? $_GET['page'] : 1 ;$pages = $page.'.html';echo $url = 'http://photo.pclady.com.cn/type/1/'.$pages;//这个循环确保了网络不好或由于其他原因采集不到内容时仍可以再次采集一直采集到为止。(我之前没有写这个循环时总会出现0字节的图片)$data = file_get_contents($url);while (!$data) {        $data = file_get_contents($url);}preg_match_all("/<\/a>/is",$data,$title); foreach ($title[1] as $key => $value) { $itempic[] = 'http://photo.pclady.com.cn/'.$value; } //保存了当前页面的25组主题图片的采集地址 $_SESSION['itempic'] = $itempic; //保存了每组主题图片的缩略图地址 $_SESSION['titlepic'] = $title[3]; //保存下当前页面号 $_SESSION['page'] = $page; echo ""; ?>[/php]
这个页面会作些跳转处理
[php]

<?php
/**
* Author: 蓝色夏威夷
* date: Mon Dec 15 14:57:01 CST 2008
* Email:[email protected]
* QQ:415961641
*/
set_time_limit(600);
session_start();
//把某个页面的25组图片地址带到这个页面
$itempic = $_SESSION['itempic'];
//当前页面有多少组图片主题(用于判断本页有没有采集完)
echo $coun = count($itempic);
echo '<br>';
//在采集到第几组图片了
echo $itemid = $_GET['itemid']!='' ? $_GET['itemid'] : 0;
echo '<br>';
//在采集到第几页了
echo $page = $_SESSION['page'];
echo '<br>';
//获得当前组的采集地址
$value = $itempic[$itemid];
$picaddr = file_get_contents($value);
//这个上面已经解释过了
while (!$picaddr) {
$picaddr = file_get_contents($value);
}
preg_match_all("/small\.jpg\",imgUrl:\"(.+?)\",name:/is",$picaddr,$bigaddr);
//保存着当前组的所有图片地址,(终于得到图片地址了)
$_SESSION['picaddr'] = $bigaddr[1];
//如果本页没有采集完继续采集本页的下一组
if($itemid < $coun){
echo "<script>location.href='pic.php?itemid=".$itemid."';</script>";
}
?>
[/php]

这个是采集页面
[php]<?php/** * Author: 蓝色夏威夷 * date: Mon Dec 15 14:57:01 CST 2008 * Email:[email protected]  * QQ:415961641*/set_time_limit(600);session_start();$picaddress = $_SESSION['picaddr'];$itempic = $_SESSION['itempic'];$titlepic = $_SESSION['titlepic'];echo '当前页数:';echo $page = $_SESSION['page'];echo '
此组图片数:';echo $count = count($picaddress);echo '
图片组ID:';echo $itemid = $_GET['itemid'];echo '
图片ID:';echo $picid = $_GET['picid']!='' ? $_GET['picid'] : 0;echo '
';echo '
图片URL:';echo $values = $picaddress[$picid];echo '
图片目录:';$tempname = explode('/',$itempic[$itemid]);echo $dir = intval($tempname[4]);echo '
图片名称:';echo $file = $dir.$picid.'.jpg';echo '
';//建立一个文件夹保存每一组图片if(!file_exists("./$dir")){        mkdir("./$dir", 0700);}$dates = file_get_contents($values);while (!$dates) {        $dates = file_get_contents($values);}//这是一些写入文件的操作$wf = fopen("./$dir/$file","wb");if($wf){        if(fwrite($wf,$dates)){                echo ''. $file . '   写入成功';        }else{                $_SESSION['err'][] = $values; //当写入失败时把图片地址保存到出错数组        }        fclose($wf);                }//这一段是把 page.php 页面的得到的缩略图地址采集并放到每组文件夹下,都命名为 titlepic.jpgif(!file_exists("./$dir/titlepic.jpg")){        $temppic = $titlepic[$itemid];        $titledates = file_get_contents($temppic);        while (!$titledates){                $titledates = file_get_contents($temppic);        }        $titlef = fopen("./$dir/titlepic.jpg",'wb');        if($titlef){                fwrite($titlef,$titledates);                fclose($titlef);        }}//判断本页面的图片有没有采集完(如果当前的组号为24而且图片号等于本组的图片数则已经采集完)if($itemid == 24 && $picid == ($count-1)){        $page++;        if($page < 4){//控制采集到第几页(默认从第一页采集到3页面止)如果没有到指定的页面则继续到page.php采集                echo ""; }else{ echo '采集完成!'; exit; } }else{ //如果图片号等于本组的图片数则采集本页的下一组图片。否则采集本组的下一张图片 if($picid < ($count-1)){ $picid++; echo ""; }else{ $itemid++; echo ""; } } ?>[/php]

caiji.rar (2.87 KB)

下载次数:153

2009-1-2 09:27

作者: wanchun0222   发布时间: 2009-01-02

学习学习

作者: cqc1008   发布时间: 2009-01-04

up~

作者: niceup   发布时间: 2009-01-05

xiao wan fa tu le

作者: 0hudu   发布时间: 2009-01-05

很不错的说。。。。

作者: winglechen   发布时间: 2009-01-07

貌似很好很强大

作者: dx_andy   发布时间: 2009-01-07

楼主的注释写的很详细。

作者: function   发布时间: 2009-01-10

哎,没有来顶下啊。

作者: function   发布时间: 2009-01-10

顶一个先,学习了。谢谢哦!~

作者: wanchun0222   发布时间: 2009-01-21

是图形界面的吗

作者: ibio   发布时间: 2009-01-21