首先分析一下,采集过程主要包括: 1.采集文档 2.生成文档 3.更新页面
三部分
由于这三部分都可以用dede后台完成,所以肯定有对应的函数可以调用。现在目标就是将这些函数找出来,然后自己写一个func把所有流程整理出来,让php实现自动采集 现在以5.6为例.打开后台页面,采集节点管理,找到真正的页面地址: dede/co_main.php
然后将鼠标移动到“采集"按钮上,可以看到指向js 函数 GatherSel("")
打开co_main.php 找到GatherSel函数定义:
复制代码
-
- function GatherSel(nid)
- {
- if(nid=="") nid = getOneItem();
- if(nid==""){ alert("请选择一个节点!"); return;}
- location.href = "co_gather_start.php?nid="+nid; //看到了么?真正的函数在这里 co_gather_start.php
- }
| 然后我们来看一下 co_gather_start的内容
复制代码
- <?php
- require_once(dirname(__FILE__)."/config.php");
- require_once(DEDEINC."/dedecollection.class.php"); //这个类应该就是dede的采集模块了
- if(!empty($nid)) //??这里不太明白,不是要用$_GET[""]才能获得参数的吗?哪位php大虾帮手解释下?
- $ntitle = '采集指定节点:';
- $nid = intval($nid); //类型转换
- $co = new DedeCollection(); //实例化
- $co->LoadNote($nid); //载入节点,这个函数有用,记住哦~
- $row = $dsql->GetOne("Select count(aid) as dd From `#@__co_htmls` where nid='$nid'; "); //dede的自定义sql,应该是在config里定义的(还没打开来看)
- /*
- 上面的sql语句是查询dede_co_htmls表,这个表应该就是用来储存节点内容到数据库的.
- ok,下面我们的目标就是自己写一个采集节点内容到数据库的功能~
- */
- if($row['dd']==0)
- {
- $unum = "没有记录或从来没有采集过这个节点!";
- }
- else
- {
- $unum = "共有 {$row['dd']} 个历史种子网址!<a href='javascript:SubmitNew();'>[<u>更新种子网址,并采集</u>]</a>";
- }
- }
- else
- {
- $ntitle = '监控式采集:';
- $unum = "没指定采集节点,将使用检测新内容采集模式!";
- }
- include DedeInclude('templets/co_gather_start.htm');
- ?>
|
关于几种采集模式有点不明白,要重新了解一下先~
点“开始采集”后,指向 <form name="form1" action="co_getsource_url_action.php" method="get" target='stafrm'>
再次辗转反侧,找到
co_getsource_url_action.php //从数据库里载入某个节点 function LoadNote($nid)
//--------------------------------------------------------- 先分析这种采集模式
复制代码
- //重新下载所有内容模式
- /*-----------------------------
- function Download_all() { }
- ------------------------------*/
- else
- {
- $gurl = "co_gather_start_action.php?notckpic=$notckpic&islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
- $gurlList = "co_getsource_url_action.php?islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
- $co = new DedeCollection();
- $co->LoadNote($nid);
- $limitList = $co->GetSourceUrl($islisten,$glstart,$pagesize);
- if($limitList==0)
- {
- $row = $co->dsql->GetOne("Select count(aid) as dd From `#@__co_htmls` where nid='$nid'");
- $totalnum = $row['dd'];
- ShowMsg("已获得所有种子网址,转向网页采集...",$gurl."&totalnum=$totalnum");
- exit();
- }
- if($limitList>0)
- {
- ShowMsg("采集列表剩余:{$limitList} 个页面,继续采集...",$gurlList."&glstart=".($glstart+$pagesize),0,100);
- exit();
- }
- }
激动人心的时刻到了,我们新建一个test.php,同时把dede_co_htmls表清空, 然后运行test.php测试一下 复制代码- <?
- require_once("dede/dede/config.php"); //dede配置函数,url地址请自己修改
- require_once("dede/include/dedecollection.class.php"); //采集扩展函数
- $co = new DedeCollection(); //采集类
- $co->LoadNote(1); //载入节点(nId),此外暂时载入第一个节点测试
- $limitList = $co->GetSourceUrl(1,0,10,2); //采集种子网址
-
- ShowMsg("finish");
- $gurl = "co_gather_start_action.php?notckpic=$notckpic&islisten=$islisten&nid=$nid&startdd=$startdd&pagesize=$pagesize&sptime=$sptime";
- // $dsql->ExecuteNoneQuery("Update `#@__co_note` set cotime='".time()."' where nid='$nid'; ");
- ?>
|
再打开co_htmls表 o,yeah~有数据鸟~ 采集成功~~~
|