重症肌无力病友之家电脑乐园 → 帝国cms的单页面多点采集

发表一个新主题 回复帖子您是本帖第 1268 个阅读者  浏览上一篇主题 刷新本主题 浏览下一篇主题
 主题帝国cms的单页面多点采集 适合打印机打印的版本  通过电子邮件发送此页面  添加加到IE收藏夹  报告本帖 
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题 发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

帝国cms7.0中,如果希望在一个页面中,实现多点采集,如何办到呢?
其实,列表页面的采集就是多点采集。但是内容页却没有这个功能。
先说说什么是多点采集,看和你理解的一样吗?比如采集微博,一个页面有多条信息,我们要把他们拆解成多条分别采集下来。这就是我说的多点采集。

——————————

转播到腾讯微博 发表时间:2014-09-25 06:25:13  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

登录后台,查看到执行采集到文件名为:e/admin/DoCj.php。研究一番。

======代码===========
<?php
define('EmpireCMSAdmin','1');
require("../class/connect.php");
require("../class/db_sql.php");
require("../class/functions.php");
$link=db_connect();
$empire=new mysqlquery();
//验证用户
$lur=is_login();
$logininid=$lur['userid'];
$loginin=$lur['username'];
$loginrnd=$lur['rnd'];
$loginlevel=$lur['groupid'];
$loginadminstyleid=$lur['adminstyleid'];
//验证权限
CheckLevel($logininid,$loginin,$classid,"cj");
$add=$_GET;
$classid=$add['classid'];
$count=count($classid);
if(!$count)
{
    printerror("NotChangeCjid","history.go(-1)");
}
esetcookie("recjnum",$count,0,1);
$url="ecmscj.php?enews=CjUrl";
echo"<center>采集节点的总个数为:<font color=red>$count</font>个</center><br>";
for($i=0;$i<$count;$i++)
{
    $trueurl=$url."&from=$_GET[from]&classid=".$classid[$i];
    echo"<iframe frameborder=0 height=35 name='class".$classid[$i]."' scrolling=no
            src=\"".$trueurl."\"
            width=\"100%\"></iframe><br>";
}
db_close();
$empire=null;
?>
<iframe frameborder=0 height=35 name="checkrecj" scrolling=no
            src="CheckReCj.php?first=1&from=<?=$add[form]?>"
            width="100%"></iframe>
===============代码结束==============

可以看到,转到/e/admin/ecmscj.php?enews=CjUrl 去执行了。

——————————

转播到腾讯微博 发表时间:2014-09-25 06:41:15  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

今天终于大发神威,完美解决了这个问题。只需修改/e/class/cjfun.php文件中的以下几处:
1.函数ReturnCJ_str中添加个默认为1的参数$diJiGe,表示单页面多点采集的第几个点。
//取得替换空余出来的值
function ReturnCJ_str($text,$exp,$info,$diJiGe=1){
    $e1="[phome-".$exp."]";
    $e2="[/phome-".$exp."]";
    $text=stripSlashes(stripSlashes($text));
    //替换回车
    $text=ReplaceFc($text);
    $rep="[!--".$exp."--]";
    //替换
    $num=CountCJ_site($text,$exp);//取得符号位置
    $zztext=RepInfoZZ($text,$exp,0);
    $text1=stripSlashes(preg_replace($zztext,$e1."".$num.$e2,$info));
   
    $r=explode($e1,$text1);
    $r1=explode($e2,$r[$diJiGe]);
    $text1=$r1[0];
   
   
    return $text1;
}

[此帖子已被 海蓝港湾 在 2014-9-27 13:32:57 编辑过]

——————————

转播到腾讯微博 发表时间:2014-09-27 13:32:15  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

2.大概在1570行左右,对照添加。意思是从采集页面地址中取得参数,$diJiGe.

    //入库数据库是否有记录
        if(empty($r[recjtheurl]))
        {
            $tmpnum=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_infotmp_".$r[tbname]." where oldurl='$nr[newsurl]' limit 1");
            if($tmpnum)
            {continue;}
        }
        //海蓝添加
        $hltemp=explode("diJiGe=",$nr[newsurl]);
        if(count($hltemp)==2){
            $diJiGe=$hltemp[1];
        }else{$diJiGe=1;}
        //海蓝添加结束
        //取得远程页面,三次取不到值的将不取值

——————————

转播到腾讯微博 发表时间:2014-09-27 13:36:31  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

3.大概在1700行左右,把

$zzvalue=ReturnCJ_str($r[$var],$dofield,$info);

修改为:

$zzvalue=ReturnCJ_str($r[$var],$dofield,$info,$diJiGe);


              

——————————

转播到腾讯微博 发表时间:2014-09-27 13:38:25  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

就这个三个地方。修改好了后,在采集节点设置中,当需要多点采集单页面时,只要在页面地址后添加?diJiGe=n 就可以实现多点采集了。特别的,还可以使用[page]变量,一下子全部采集到。

——————————

转播到腾讯微博 发表时间:2014-09-27 13:43:04  IP:已记录
本主题共有 1 页 [ 1 ] 收藏帖子 | 取消收藏 | 返回页首 

Powered by BBSxp /Licence © 1998-2005
Script Execution Time:1000ms
晋ICP备07500169号-1