您当前的位置:首页 > CMS常见问题 > phpcms常见问题 >

phpcms采集内容教程及采集内容缺少不全的解决方法

0

前几天,接到了一个网站改版的任务,总的来说,客户有两个主要的要求:
1. 网站的风格要重新设计,按新LOGO的色调进行配色;
2. 网站所有的资料都按照原网站。

根据以上的第二点要求,新网站的所有资料很适合采用phpcms后台内置的采集功能从原网站那里采集过来。当然,如果有原网站的所有资料,包括网站整站源码以及数据库,那么可以在原网站基础上进行改版,而不用重新添加网站资料,废话少说进入主题。

一、phpcms如何采集内容

打开客户的原网站,我打算首先将原网站的产品中心栏目的资料全都采集过来,原网站的产品分类有:

除尘器设备
家具厂喷油房
有机废气处理设备
通风设备
活性炭吸附塔
UV光解净化器
消音房
环保空调工程
废水/纯水处理设备

我们点开其中一个产品分类(如家具厂喷油房),查看其列表页网址规则(因为稍后我们要用到),如下图所示:

查看产品列表页网址规则

点击下一页,到最后一页,我们可以总结出产品列表页的网址规则为:

网址类型

从上图的网址中可以看出1、2、3的数字指示了列表页分页的网址的变化规则。

登陆后台,依次选择内容 - 采集管理 - 添加采集点:

网址规则配置
phpcms添加采集点

以上有几点需要说明:

1.如何选择采集页面编码:查看原网站(目标网站)的源代码,具体步骤如下:
使用浏览器打开目标网站,鼠标右键,查看页面源代码(或快捷键CTRL+U),查看目标网站所使用的编码。

2.网址中必须包含:查看原网站(目标网站)的产品列表页的源代码,可以看到产品内容页(详情页)的链接都包含products_content字符,所以填写该字符以此只匹配产品内容页的网址。

3.获取网址:查看原网站(目标网站)的产品列表页的源代码,找出包含所有产品内容页链接的开始标签和结束标签。

添加成功后,测试你的网址采集规则是否正确。

内容规则配置
为了便于说明,我们只采集标题、内容两个字段。
采集内容网址:的内容采集规则,请你打开这个网址,然后在页面空白处右键 - 查看页面源代码 - 搜索标题和内容的开始边界。

标题采集配置:从网页<title></title>里取标题,并去除不需要的字符,如下图所示:

采集标题规则

内容采集配置:产品内容页的内容都包含在<!--详情--><!--end 详情-->之间,而且这二个结点,在整个页面源代码中具有唯一性。所以可以以此为规则取内容,并对内容进行过滤,如下图所示:

采集内容规则

自定义规则
除系统自带的规则外,可根据自己需求进行自定义规则采集,操作和系统规则相同。

高级配置
可设置是否把图片下载到服务器上,是否打水印等配置。

至此,添加的采集点已配置完成,可以开始采集网址、采集内容和内容发布的操作了,如下图所示:

采集内容管理

首先我们第一步是要先采集网址,第二步是采集内容,待内容采集完成之后,第三步就是内容发布了,如下图所示:

已采集的内容列表

可选择导入选中的列表项或全部导入,之后选择要导入的栏目并提交。提交后跳转到栏目配置设置页面,按照相关提示即可导入成功。

二、phpcms采集内容缺少不全的原因

使用过phpcms采集内容的站长们可能会发现一个问题,就是采集的内容的总条数出现缺少或不全的情况,例如,以上我们在采集家具厂喷油房的产品的时候,可以看到在目标网站上该家具厂喷油房的产品总数为25,但是在采集内容的时候却只采集到19条,为什么呢?

这是因为phpcms在采集的时候过滤掉标题或网址出现重复的情况,解决办法如下:

找到并打开该文件:/phpcms/modules/collection/classes/collection.class.php,定位到第89行代码(phpcms的各版本可能存在差异):

$out = array_unique($out[1]);

将这行代码注释掉,修改如下:

// $out = array_unique($out[1]);

再定位到179和180行代码:

$out[1] = array_unique($out[1]);
$out[2] = array_unique($out[2]);

将这两行代码注释掉,修改如下:

// $out[1] = array_unique($out[1]);
// $out[2] = array_unique($out[2]);

至此,修改完成并保存,之后再重新采集内容,此时不会过滤掉标题或网址出现重复的情况。

顶部中部底部