迅睿CMS使用火车头采集内容教程
采集工具:火车采集器(可以百度搜索一下这个工具的下载)
采集模块:新闻News
第一步、编写采集入库脚本接口
新建:/api/caiji.php(应用于URL地址请求,大小写随意)
如果根目录没有api文件夹,就创建到/public/api/caiji.php(应用于URL地址请求,大小写随意)
<?php/**?*?数据采集?*/define('IS_API',?basename(__FILE__,?'.php'));?//?项目标识define('SELF',?pathinfo(__FILE__,?PATHINFO_BASENAME));?//?该文件的名称require('../index.php');?//?引入主文件
新建:./dayrui/My/Api/Caiji.php(首字母必须大小,最终php文件命名与上面的名称保持相同)
<?php$this->_module_init('news');?//?news?是模块目录if?($_GET['action']?==?'category')?{????$this->module['category']?=?\Phpcmf\Service::L('category',?'module')->get_category($this->module['share']???'share'?:?$this->module['dirname']);????if?(!$this->module['category'])?{????????echo?'模块【'.$this->module['dirname'].'】没有创建栏目';????}????foreach?($this->module['category']?as?$t)?{????????if?($t['child']?==?0?&&?$t['tid']?==?1)?{????????????echo?'<h1>'.$t['name'].'<=>'.$t['id'].'</h1>'.PHP_EOL;????????}????}}?else?{????//?入库数据????$data?=?$_REQUEST;????//?发布者id?1????$data['uid']?=?1;????//?发布者笔名?admin????$data['author']?=?'admin';????//?主表字段????$fields[1]?=?$this->get_cache('table-'.SITE_ID,?$this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR));????$cache?=?$this->get_cache('table-'.SITE_ID,?$this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_category_data'));????$cache?&&?$fields[1]?=?array_merge($fields[1],?$cache);????//?附表字段????$fields[0]?=?$this->get_cache('table-'.SITE_ID,?$this->content_model->dbprefix(SITE_ID.'_'.MOD_DIR.'_data_0'));????//?去重复????$fields[0]?=?array_unique($fields[0]);????$fields[1]?=?array_unique($fields[1]);????????//?格式化入库字段????????//?一般是格式化非文本类的字段(例如多文件上传、复选框、联动字段等等)????//?这里需要按采集资料的格式入库格式化字段,????????????//?开始归类存储????$save?=?[];????//?主表附表归类????foreach?($fields?as?$ismain?=>?$field)?{????????foreach?($field?as?$name)?{????????????isset($data[$name])?&&?$save[$ismain][$name]?=?$data[$name];????????}????}????if?(!$data['catid'])?{???????exit('栏目为空');????}????$save[1]['uid']?=?$save[0]['uid']?=?$data['uid'];????$save[1]['catid']?=?$save[0]['catid']?=?$data['catid'];????$save[1]['url']?=?'';?//?地址留空,系统会自动生成????$save[1]['status']?=?9;?//9表示正常发布,1表示审核里面????$save[1]['hits']?=?0;?//?阅读数????$save[1]['displayorder']?=?0;?//?排序权重值,默认填写0????$save[1]['link_id']?=?0;?//?填写0不管他????$save[1]['inputtime']?=?SYS_TIME;?//?发布时间设置成为当前时间????$save[1]['updatetime']?=?SYS_TIME;?//?更新时间也设置成为当前时间,关于时间采集如果是这种格式2022-12-12xx,那么需要使用strtotime函数转换成时间戳入库????$save[1]['inputip']?=?'127.0.0.1';?//?发布者ip地址????????//$save[1]['keywords']?=?dr_get_keywords(?$save[1]['title']);?//?按插件提取关键词????????//$save[1]['description']?=?dr_get_description(?$save[0]['content'],?100);?//?在内容里面提取100个子作为描述????//?验证标题重复????if?($this->content_model->table(SITE_ID.'_'.MOD_DIR)->where('title',?$save[1]['title'])->counts())?{????????echo?'重复';exit;????}????$rt?=?$this->content_model->save_content(0,?$save);????if?($rt['code'])?{????????/*????????//?用于发布成功后生成静态文件代码????????//dr_html_auth($_SERVER['SERVER_ADDR']);????????//dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['id']);????????$atcode?=?'chtml_'.SITE_ID.'_'.MOD_DIR.'_'.$rt['code'];????????\Phpcmf\Service::L('cache')->set_auth_data($atcode,?$rt['code'],?SITE_ID);????????dr_catcher_data(SITE_URL.'index.php?s='.MOD_DIR.'&c=html&m=showfile&id='.$rt['code'].'&atcode='.$atcode);$save[1]['id']?=?$save[0]['id']?=?$rt['code'];\Phpcmf\Service::L('router')->show_url(\Phpcmf\Service::C()->module,?$save[1]);????????*/????????exit('成功');????}?else?{????????exit('失败');????}}exit;
脚本文件中可以定义发布者等一些预定义字段默认值,如果你不会php的话可以保持默认
注意:本脚本的程序代码只对内容等字段入库有效,由于采集目标网站的数据规范性无法做到统一;
如果开发者对其他字段(例如多文件上传、复选框、联动字段等等)需要开发者自己根据采集的实际情况来编写入库程序来组装入库的POST数据,需要PHP开发技术基础,下面来举一些基础例子。
1、多文件上传字段
$data['字段名称']?=?dr_array2string([????['file'=>'文件路径',?'title'=>'标题'],???]);
2、复选框字段
$data['字段名称']?=?dr_array2string([????'值1',?'值2'??]);
测试规则地址:
http://你的网站/api/caiji.php?action=category
如果能显示出来栏目信息,说明ok了
如果显示api file is error,表示你./dayrui/My/Api/Caiji.php没有创建正确。
第二步、火车采集器编写web发布规则
第三步、新建一个在线发布模块
第四步、填写获取栏目列表的参数
/api/caiji.php?action=category<h1>[分类名称]<=>[分类ID]</h1>
按照上面的格式写就ok了
第五步、内容发布规则参数
发布地址:/api/caiji.php?action=post表单参数:这里是你采集的字段c错误码:失败?回车符?重复成功标志码:成功
表单参数:这里可以配置任意自定义字段的入库,不知道入库格式怎么办?
查看数据库储存数据格式进行入库处理,必要时需要在接口文件中重新编程
第六步、保存模块
第七步、然后返回web发布配置里面
按照图中的参数配置,点“获取栏目”,如果可以获取到就表示成功了一大半了
第八步、测试入库发布
第九步、后台查看采集内容