IT码农库

您当前所在位置:首页 > 网站技巧 > 整站程序

整站程序

batchcollect pagecollect来自官方杰奇jieqi定时采集配置方法参数详解第1/2页

佚名 2008-07-11整站程序844
主要的功能页面为pagecollect.php和batchcollect.php要实现采集,默认方式是根据配置好的采集规则,在浏览器提交相应的参数即可完成后面的采集入库全部动作。
前言

要实现采集,默认方式是根据配置好的采集规则,在浏览器提交相应的参数即可完成后面的采集入库全部动作。
而实现定时采集,与人工在浏览器提交有些区别,主要分两大步骤:
一、编写采集的url和相关参数,访问这个url即可实现想要的采集模式。(这个url直接在浏览器提交同样可以实现采集)
二、把定时访问这个url的功能加到系统的定时任务里面,实现无人值守的定时采集。

具体实现方法请参考下面内容:

1、对采集配置文件的解释

任何一个采集都会用到两个采集配置文件(跟后台采集规则配置对应),都可以用文本编辑器打开查看。
其中 /configs/article/collectsite.php 是对总的采集站点配置,记录了一共允许采集哪几个站点。
里面包含类似这样的内容:

$jieqiCollectsite['1']['name'] = '采集站点一'; 
$jieqiCollectsite['1']['config'] = 'abc_com'; 
$jieqiCollectsite['1']['url'] = 'http://www.abc.com'; 
$jieqiCollectsite['1']['subarticleid'] = 'floor($articleid/1000)';
$jieqiCollectsite['1']['enable'] = '1';

$jieqiCollectsite['2']['name'] = '采集站点二';
$jieqiCollectsite['2']['config'] = 'def_net';
$jieqiCollectsite['2']['url'] = 'http://www.def.net';
$jieqiCollectsite['2']['subarticleid'] = '';
$jieqiCollectsite['2']['enable'] = '1';

参数含义解释如下:
['1'] - 这里的 1 表示采集网站的数字序号,不同的采集站序号不能重复。
['name'] - 采集网站名称。
['config'] - 网站英文标识,这个网站采集规则配置文件有关,比如这个值是 abc_com ,那么采集规则配置文件就是 /configs/article/site_abc_com.php。
['url'] - 采集网站网址。
['subarticleid'] - 采集网站,文章子序号运算方式,本项目主要为了兼容以前程序,新版本里面文章子序号可以通过采集获得。
['enable'] - 是否允许采集,1 表示允许,0 表示禁止,默认为 1。

如前面所说,每个采集网站有个专门的采集规则配置文件,/configs/article/ 目录下以 site_ 开头的php文件,如 /configs/article/site_abc_com.php。

里面内容都与后台采集规则设置相对应,具体细节不一一解释。需要了解的是本文件里面内容分两大部分,前面内容都是对网站内容采集规则的配置,而最后面 $jieqiCollect['listcollect']['0'],$jieqiCollect['listcollect']['1'] 这样的设置是对网站"批量采集规则"的配置,比如按最近更新采集、按排行榜采集,可以设置多个。['0'] 这里的数字 0 表示批量采集类别的数字序号,同一个网站也不能重复。

2、编写采集内容的url及参数

这里的采集是针对多篇文章批量采集,分两种模式:
一、按页面批量采集,比如采集最新更新列表或者排行榜列表,每个链接采集一页。
链接格式如下:

https://www.jb51.net/modules/article/admin/pagecollect.php?action=collect&siteid=1&collectname=0&startpageid=1&maxpagenum=1&notaddnew=0&jieqi_username=admin&jieqi_userpassword=1234

参数含义解释如下:
www.jb51.net - 是指您的网址。
action - 字符串,程序执行的动作命令,固定值为 collect。
siteid - 数字类型,要采集的网站序号,具体哪个网站对应什么序号见配置文件collectsite.php。
collectname - 数字类型,按页面批量采集的类别序号,见配置文件site_xxxx.php里面下面的。$jieqiCollect['listcollect']['0'] 这样配置的数字。
startpageid -- 页码标志,表示从列表的第几页开始采集。一般是数字类型,有些网站也可能是字符串。
maxpagenum -- 数字类型,表示表示一共采集几页。(默认为 1 ,如果要采集多页,是需要浏览器跳转的,只有在windows环境下调用浏览器时候有效,linux下调用wget时候最多只能采集一页,需要采集多页可设置多个采集命令。)
notaddnew -- 数字类型,0-表示采集全部文章,1-表示只更新本站已有的文章。
jieqi_username - 字符串,用户名(这个用户必须是本站有权限采集的用户)。
jieqi_userpassword - 字符串,用户密码。


二、按照文章序号批量采集
链接格式如下:
https://www.jb51.net/modules/article/admin/batchcollect.php?action=bcollect&siteid=1&batchids=123,234,345&jieqi_username=admin&jieqi_userpassword=1234

参数含义解释如下:
www.jb51.net - 是指您的网址。
action - 字符串,程序执行的动作命令,固定值为 bcollect。
siteid - 数字类型,要采集的网站序号,具体哪个网站对应什么序号见配置文件collectsite.php。
batchids - 要采集的对方网站文章序号(不是本地的文章序号),采集多个文章,序号用英文逗号分开,如 123,234,345。
jieqi_username - 字符串,用户名(这个用户必须是本站有权限采集的用户)。
jieqi_userpassword - 字符串,用户密码。

注:一个url需要放到IE浏览器里面提交的时候,整个url最大长度度不要超过2083字节,所以一般建议这里的url不要设置成太长,文章多的可以拆分成多个url。


3、利用系统任务实现定时采集

一、windows环境下做法

windows里面可以用系统的任务计划来实现定时执行程序,不过首先需要制作一个批处理文件,在这个文件里面用命令来调用浏览器来执行采集url。需要注意的是命令只能打开浏览器而不会采集好之后自动关闭,要实现采集完自动关闭可以通过javascript实现。自动关闭本窗口的js代码为:

<script language="javascript"> self.opener=null; setTimeout("window.close();", 3000); </script>

这里的参数 3000 是指延迟关闭时间,单位是毫秒,3000表示延迟3秒关闭。
这段代码可以在两个地方加入:

一个是加入到提示信息模板 /themes/风格名称/msgwin.html 里面,<body>和</body>之间加入上面那段js。这样的效果是整个系统任何提示信息页面都会在3秒钟后自动关闭。

如果您希望仅仅自动关闭采集成功后的提示页面,可以在采集提示信息的语言包里面加入以上javascript,这个配置文件是 /modules/article/lang/lang_collect.php, 里面 $jieqiLang['article']['batch_collect_success'] 是采集成功的提示信息,这个值原来是:

'恭喜您,全部文章采集完成!';

改成下面这样即可自动关闭

'恭喜您,全部文章采集完成!<script language="javascript"> self.opener=null; setTimeout("window.close();", 3000); </script>';
大图广告(830*140)