DEDE 4.0 自动采集源文件 提供了

DEDE 4.0 自动采集源文件
放在网站跟目录
WINDOWS系统 建立个 ****.cmd 内容  
D:\php\php-cgi E:\wwwroot\**\cj.php
再做个计划任务就可以了(D:\php\php-cgi E:\wwwroot\**\cj.php 知道是什么吧)
LINUX 系统定时间任务偶不会 一样是 运行 cj.php 会的可以回复下

cj.php  源文件

代码如下:

<?php 
//要放别的目录请改路径 
require_once(dirname(__FILE__)."/include/config_base.php"); 
require_once(dirname(__FILE__)."/include/pub_collection.php"); 
require_once(dirname(__FILE__)."/include/pub_datalist.php"); 
require_once(dirname(__FILE__)."/include/inc_functions.php"); 
require_once(dirname(__FILE__)."/include/pub_dedetag.php"); 
require_once(dirname(__FILE__)."/include/inc_archives_view.php"); 
require_once(dirname(__FILE__)."/include/inc_arclist_view.php"); 
//添加数据 采集栏目名称,采集栏目ID, 前台栏目名称,前台栏目ID  有几个就填写几行 
$makearr = array(); 
array_push($makearr,array('采集一',1,'分类一',25)); 
array_push($makearr,array('采集二',2,'分类二',26)); 
//其它一些参数 
$makehtml = 1 ;//生成文章 
$threadnum  = 5 ; //间隔时间 
$pagesize = 5; //设置线程 
$islisten = 0 ; //附加选项 不下载曾下载的网址-> 0 ; 仅下载未下载内容->-1; 重新下载所有内容->1 
$sptime = 0 ; //防刷新的站点需设置  x秒 
$channelid = 1 ;//导入的文章模型 
$web = "www-data"; //web用户 
$webgroup = "www-data"; //web用户组 
$onlytitle = 1 ; // 
while(sizeof($makearr)>0){ 
        $nid = $makearr[0][1]; //采集栏目ID 
        $typeid = $makearr[0][3]; //前台栏目ID 
        array_shift($makearr); 
        //采集 
        //多线程模式初次设置 
        $co = new DedeCollection(); 
        $co->Init(); 
        $co->LoadFromDB($nid); 
        $co->GetSourceUrl(); 
        $co->dsql->SetQuery("Update #@__conote set lasttime='".mytime()."' where nid=$nid"); 
        $co->dsql->ExecuteNoneQuery(); 
        $co->dsql->SetQuery("Select aid,url From #@__courl where nid=$nid "); 
        $co->dsql->Execute(99); 
        while($row = $co->dsql->GetObject(99)) 
        { 
                $lrow = $co->dsql->GetOne("Select * From #@__co_listenurl where url like  
'".addslashes($row->url)."'"); 
                if(is_array($lrow)){ 
                        if($islisten==0) continue; 
                } 
                else{ 
                        echo $inquery = "INSERT INTO #@__co_listenurl(nid,url) VALUES ('$nid',  
'".addslashes($row->url)."');"; 
                        $co->dsql->ExecuteNoneQuery($inquery); 
                }

$co->DownUrl($row->aid,$row->url); 
                if($sptime>0) sleep($sptime);


        $co->Close(); 
        //导入到当前的数据库并生成html 
        $dsql = new DedeSql(false); 
        $maxidrow = $dsql->GetOne("Select max(ID) as maxid From #@__archives where typeid=$typeid  
;"); 
        $maxart_id = $maxidrow['maxid']; 
        $mrow = $dsql->GetOne("Select count(*) as dd From #@__courl where nid='$nid'"); 
        $totalcc = $mrow['dd']; // 
        $rrow = $dsql->GetOne("Select typeid From #@__conote where nid='$nid'"); 
        $ruleid = $rrow['typeid']; 
        $rrow = $dsql->GetOne("Select channelid From #@__co_exrule where aid='$ruleid'"); 
        $channelid = $rrow['channelid']; 
        if(!isset($channelid)) $channelid = 0; 
        if(!isset($typeid)) $typeid = 0; 
        if(!isset($makehtml)) $makehtml = 0; 
        if(!isset($onlytitle)) $onlytitle = 1; 
        $dsql = new DedeSql(false); 
        $row = $dsql->GetOne("Select * From #@__co_exrule where aid='$ruleid'"); 
        if(!is_array($row)){ 
                echo "找不到导入规则,无法完成操作!"; 
                $dsql->Close(); 
                continue; 
        } 
        //分析规则,并生成临时的SQL语句 
        $dtp = new DedeTagParse(); 
        $dtp->LoadString($row['ruleset']); 
        $noteinfo = $dtp->GetTagByName('note'); 
        $tablenames = explode(",",$noteinfo->GetAtt('tablename')); 
        $autofield = $noteinfo->GetAtt('autofield'); 
        $synfield = $noteinfo->GetAtt('synfield'); 
        $tablename1 = $tablenames[0]; 
        $tb1SqlKey = "Insert Into $tablename1("; 
        $tb1SqlValue = " Values("; 
        if(count($tablenames)>=2){ 
                $tablename2 = $tablenames[1]; 
                $tb2SqlKey = "Insert Into $tablename2("; 
                $tb2SqlValue = " Values("; 
                if($synfield!=''){ 
                        $tb2SqlKey .= $synfield; 
                        $tb2SqlValue .= "'@$synfield@'"; 
                } 
        } 
        else{ 
                $tablename2 = ""; 
                $tb2SqlKey = ""; 
                $tb2SqlValue = ""; 
        } 
        $exKeys = Array(); 
        foreach($dtp->CTags as $tagid => $ctag) 
        { 
                if($ctag->GetName()=='field') 
                { 
                        $fieldname = $ctag->GetAtt('name'); 
                        $tbname = $ctag->GetAtt('intable'); 
                        if($tbname==$tablename1){ 
                                $tb1SqlKey .= ",$fieldname"; 
                                if($ctag->GetAtt('source')!='value'){ 
                                        $tb1SqlValue .= ",'@#{$tbname}.{$fieldname}#@'"; 
                                }else{ 
                                        $nvalue = str_replace('{tid}',$typeid,$ctag->GetInnerText 
()); 
                                        $nvalue = str_replace('{cid}',$channelid,$nvalue); 
                                        $nvalue = str_replace('{rank}',0,$nvalue); 
                                        $nvalue = str_replace('{admin}',"1",$nvalue); 
                                        $tb1SqlValue .= ",'$nvalue'"; 
                                } 
                        } 
                        else if($tbname==$tablename2){ 
                                $tb2SqlKey .= ",$fieldname"; 
                                if($ctag->GetAtt('source')!='value'){ 
                                        $tb2SqlValue .= ",'@#{$tbname}.{$fieldname}#@'"; 
                                }else{ 
                                        $nvalue = str_replace('{tid}',$typeid,$ctag->GetInnerText 
()); 
                                        $nvalue = str_replace('{cid}',$channelid,$nvalue); 
                                        $nvalue = str_replace('{rank}',0,$nvalue); 
                                        $tb2SqlValue .= ",'$nvalue'"; 
                                } 
                        } 
                } 
        } 
        $tb1SqlKey = str_replace('(,','(',$tb1SqlKey).")"; 
        $tb1SqlValue = str_replace('(,','(',$tb1SqlValue).");"; 
        $tb1Sql = $tb1SqlKey.$tb1SqlValue; 
        if($tablename2!="") 
        { 
                $tb2SqlKey = str_replace("(,","(",$tb2SqlKey).")"; 
                $tb2SqlValue = str_replace("(,","(",$tb2SqlValue).");"; 
                $tb2Sql = $tb2SqlKey.$tb2SqlValue; 
        } 
        //导出数据的SQL操作 
        $dsql->SetQuery("Select * From #@__courl where nid='$nid' order by aid asc "); 
        $dsql->Execute(); 
        while($row = $dsql->GetObject()) 
        { 
                $tmpSql1 = $tb1Sql; 
                $tmpSql2 = $tb2Sql; 
                $dtp->LoadString($row->result); 
                $aid = $row->aid; 
                if(!is_array($dtp->CTags)){ continue; } 
                if($onlytitle){ 
                        $titletag = ''; 
                        foreach ($dtp->CTags as $ctag){ 
                                $tvalue = $ctag->GetAtt("name"); 
                                if($tvalue == '#@__archives.title' || $tvalue ==  
$cfg_dbprefix.'archives.title'){ 
                                        $titletag = $ctag; 
                                        break; 
                                } 
                        } 
                        if(is_object($titletag)){ 
                                $title = trim(addslashes($titletag->GetInnerText())); 
                                $testrow = $dsql->GetOne("Select count(ID) as dd From #@__archives  
where title like '%$title%'"); 
                                if($testrow['dd']>0){ 
                                        echo "数据库已存在标题为: {$title} 的文档,程序阻止了此内 
容导入<br/>"; 
                                        continue; 
                                } 
                        } 
                } 
                foreach($dtp->CTags as $ctag) 
                { 
                        if($ctag->GetName()!="field") continue; 
                        $tvalue = $ctag->GetAtt("name"); 
                        $tmpSql1 = str_replace('@#'.$tvalue.'#@',addslashes($ctag->GetInnerText 
()),$tmpSql1); 
                        if($tablename2!=""){ 
                                $tmpSql2 = str_replace('@#'.$tvalue.'#@',addslashes($ctag- 
>GetInnerText()),$tmpSql2); 
                        } 
                } 
                $tmpSql1 = ereg_replace('@#(.*)#@','',$tmpSql1); 
                $rs = $dsql->ExecuteNoneQuery($tmpSql1); 
                if($rs && $tablename2!=""){ 
                        if($synfield!=""){ 
                                $lid = $dsql->GetLastID(); 
                                $tmpSql2 = str_replace("@$synfield@",$lid,$tmpSql2); 
                                $rs = $dsql->ExecuteNoneQuery($tmpSql2); 
                                if(!$rs) $dsql->ExecuteNoneQuery("Delete From $tablename1 where  
$autofield='$lid'"); 
                        } 
                        else $dsql->ExecuteNoneQuery($tmpSql2); 
                } 
                $dsql->ExecuteNoneQuery("update #@__courl set isex=1 where aid='$aid'"); 
        } 
        $dsql->Close(); 
        //生成html 
        if($channelid>0 && $makehtml==1){ 
                if(!$maxart_id) $maxart_id =0; 
                $dsql = new DedeSql(false); 
                $dsql->SetQuery("Select ID From #@__archives where typeid=$typeid and ID  
>$maxart_id ;"); 
                $dsql->Execute(); 
                while($row=$dsql->GetObject()) 
                { 
                        $ID = $row->ID; 
                        $ac = new Archives($ID); 
                        $rurl = $ac->MakeHtml(); 
                        $ac->Close(); 
                } 
                $dsql->Close(); 
        } 
        //生成首页 
        $templet  = "{style}/index.htm"; 
        $templet = str_replace("{style}",$cfg_df_style,$templet); 
        $homeFile = dirname(__FILE__)."/index.html"; 
        $homeFile = str_replace("\\","/",$homeFile); 
        $homeFile = str_replace("//","/",$homeFile); 
        $fp = fopen($homeFile,"w") or die("你指定的文件名有问题,无法创建文件"); 
        fclose($fp); 
        $pv = new PartView(); 
        $pv->SetTemplet($cfg_basedir.$cfg_templets_dir."/".$templet); 
        $pv->SaveToHtml($homeFile); 
        $pv->Close();


$dsql = new DedeSql(false); 
$dsql->SetQuery("Select ID,typedir From #@__arctype;"); 
$dsql->Execute(); 
while($row=$dsql->GetObject()) 

        //生成列表html 
        $lv = new ListView($row->ID); 
        $lv->MakeHtml(); 
        $lv->Close(); 

$dsql->Close(); 
?>

(0)

相关推荐

  • DEDE 4.0 自动采集源文件 提供了

    DEDE 4.0 自动采集源文件 放在网站跟目录 WINDOWS系统 建立个 ****.cmd 内容   D:\php\php-cgi E:\wwwroot\**\cj.php 再做个计划任务就可以了(D:\php\php-cgi E:\wwwroot\**\cj.php 知道是什么吧) LINUX 系统定时间任务偶不会 一样是 运行 cj.php 会的可以回复下 cj.php  源文件 复制代码 代码如下: <?php  //要放别的目录请改路径  require_once(dirname(_

  • Python自动采集微信联系人的实现示例

    疫情终于有所好转了,感谢所有的为之奋斗的白衣天使们,你们是最棒的!赞! 白衣天使们在前线奋战,我们也总不能总在家里躺着做贡献,也要加强学习,争取开春有个好工作:) 这周花了几天的时间,把Python的pywinauto相关的使用及一堆的库函数看了一遍,感觉这个库还是非常强大的. pywinauto是什么? pywinauto是一组用于自动化Windows GUI的python模块.简单地说,它允许您将鼠标和键盘操作发送到windows对话框和控件.这是官方的解释,简单说就是可以用python代码

  • ASP下实现自动采集程序及入库的代码

    最近网上流行着一些采集程序,更多人拿着这些东西在网上叫卖,很多不太懂的人看着那些程序眼羡,其实如果你懂一些ASP,了解自动采集程序的原理后,你会感觉实现自动化也是那么的简单. 原理及优点:通过XML中的XMLHTTP组件调用其它网站上的网页,然后批量截取或替换原有的信息使其转化成变量后再一一储存到数据库中.其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的.与其单纯的ASP小偷程序不同的是:它已经不再依赖其目标网站. 简单事例: 复制代码 代

  • Thinkphp5.0自动生成模块及目录的方法详解

    本文实例讲述了Thinkphp5.0自动生成模块及目录的方法.分享给大家供大家参考,具体如下: Thinkphp5.0发布已有些时日了,据说性能方面有很大的提升,按照官方的话,ThinkPHP5.0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,并针对API开发做了大量的优化.是时候得download一份,研究一下.今天主要讲讲其自动创建模块及目录. Thinkphp5.0自动生成模块较ThinkPHP3.2,确实有很大的变化

  • 基于Jquery的文字自动截取(提供源代码)

    插件需求(功能需要) 一个插件就是完成一个特定的功能,我们在动手制作一个插件时应该确定该插件开发完成后应具备哪些功能供我们使用. 在某天早上,按模式的完成开机.连接数据库.开启VS开发环境.调试程序.程序跑起了,可是页面中的有段内容超过了页面所容许的范围.这还不容易哟,SubString呗, 对,这的确是个好法子,能解决这类问题,但当页面需要被处理过后的内容进行交互,这种方法难免有点不适应了,那么我们就使用Jquery开发一个满足该需求的插件吧: 开发须知 如果您对使用Jquery开发插件的流程

  • ASP 自动采集实现代码

    其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的.与其单纯的ASP小偷程序不同的是:它已经不再依赖其目标网站. 参考代码: 复制代码 代码如下: <% '声明取得目标信息的函数,通过XML组件进行实现. Function Geturl(/blog/url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "GET"

  • 浅谈自动采集程序及入库

    <%'声明取得目标信息的函数,通过XML组件进行实现.Function GetURL(url) Set Retrieval = CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "GET", url, False.Send GetURL = bytes2bstr(.responsebody)'对取得信息进行验证,如果信息长度小于100则说明截取失败if len(.responsebody)<10

  • 自动采集程序

    最近在做一个音乐站,音乐文件嘛...一般是从网上收集..so..写了一段采集程序.  复制代码 代码如下: <%   On Error Resume Next   Const uploadPath = "/uploads/" '文件存放路径   Const allowFileExt = "jpg,wma,swf,gif" '允许被采集的文件类型   'Const allowFileSize = "200"   Function getFil

  • Android7.0自动更新适配 包解析异常

    在Android7.0的手机上,自动更新的时候出现包解析异常,在其他的手机上没有这个问题. 原因: Android7.0引入私有目录被限制访问和StrictMode API .私有目录被限制访问是指在Android7.0中为了提高应用的安全性,在7.0上应用私有目录将被限制访问.StrictMode API是指禁止向你的应用外公开 file:// URI. 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,则会报出异常. 解决办法: 第一步:在AndroidManif

  • 通用病毒杀灭机1.0正式版发布 提供下载了

    本工具是一个全自动病毒清理工具,对于求助者来说只需导入一个配置文件即可完成病毒的清除工具. 使用非常简单: 1.从剪贴板导入或文件导入修复指令 2.重启执行就可 之所以迟迟没有正式版,原因在于其全自动清理中可能包含的BUG,测试版发布了三个版本,经过一定量用户的使用反馈,在软件比较稳定的基础上才发布正式版. 其它说明: 1.使用软件请最好先看帮助   (help.chm文件没有更新) 2.使用后出现系统启动就打开某个文件夹 如: c:\windows\system32\sjis12.exe 表示

随机推荐