帝国CMS-采集关键的经验总结

栏目:建站技术 2020-10-30

采集关键的几个步骤
一:先建好栏目
二:增加采集节点(需要选择栏目)
三:录入节点名称
四:如果有很多页,只需录入采集页面地址方式二中的内容

地址为
https://www.sznest.net/news.asp?big_class_id=3&page=[page]
页码从1到多少页之间、间隔倍数为1(这个多少页即被采集的网站的实际页数,注意这里修改后,在采集页面地址中会自动生成页面的地址列表)

五:入库栏目可以重新选择

六:信息链接区域正则:如:
<TD width="23%" align="center">日期</TD></TR>[!--smallurl--]<TR class="btrtitle">

七:信息页链接正则:如<a class="news_dian" href="[!--newsurl--]">

八:内容页标题正则:<H2>[!--title--]</H2>

九:新闻正文正则:如</H2>[!--newstext--]<CENTER><STRONG>


常用采集方法:

1:列表页标题图片采集方法:如果列表页的标题图片的Src地址为相对路径,那么,需要在列表页的标题图片正则的右侧的“图片地址前缀”的文本框中加入域名地址,同时勾选上保存本地,如果标题图片在内容页,这里需要留空,同时在内容页-下面的标题图片正则的那里写上正则

2:内容页图片的采集方法:选项请勾选远程保存图片到本地(内容),只有选上之后采集内容页的图片入库的时候才会保存,同时这里不用设置过滤选项,如果内容页的图片地址为图片地址为相对地址时需要加上图片地址的前缀比如https://www.sznest.net,如果这个相对地址中还带有../../的话,那么还需要在过滤选项中使用“替换:(针对标题与内容)”功能将"../../"替换为"/"


3:图片集采集方法:
注意图片采集之前不要删除或者修改默认的图片系统模型中的字段,否则要入库的这个栏目即使绑定的图片系统模型,很有可能增加节点的时候找不到填写图片集正则的地方

如果只要采集图片集的缩略图,正则示例如下:
<p><IMG src=\'[!--ecmsspicurl--]\'></p>
如果只要采集图片集的大图,正则示例如下:
<li><IMG src=\'[!--ecmsbpicurl--]\'></li>
如果只要采集图片的名称,正则示例如下:
<span>[!--ecmspicname--]</span>

如果同时要采集多个的话,需要用用“[!empirecms!]”格开,那么结合上面的示例,正确的正则应该是
<p><IMG src=\'[!--ecmsspicurl--]\'></p>[!empirecms!]<li><IMG src=\'[!--ecmsbpicurl--]\'></li>[!empirecms!]<span>[!--ecmspicname--]</span>
提示一下:图片集的采集的正则表达式是存在old_ecms_infoclass_photo这个表的zz_morepic这个字段中

4:整体页面过滤使用到的情况
比如,在列表页中如果一个产品,但是标题和图片都有链接的时候(也就是存在两个相同链接),但是只想采集一个链接的情况下,可在“附加选项”中的“整体页面过滤正则”文本框中添对其中的一个链接的正则,比如去除图片的链接正则<a href="*"><img src="*"/></a>

5:过滤内容页的图片方法,过滤广告正则,比如下面的
<img[!--ad--]>,<IMG[!--ad--]>
如果图片外面被p标签包含的话,正则如下
<p><img[!--ad--]></p>,<p><IMG[!--ad--]></p>



注意事项:
一:如果列表页的信息链接地址为相对跳径,需要加上地址前缀,比如https://www.sznest.net/,如果信息页的地址前面还有../../这样的,那么可以直接写成<a href="../../[!--newsurl--]"

二:如果采集页面地址带有中文的话,建议在火狐中复制,将其中文进入转换,比如
Product.asp?BigClassName=婚庆布置&amp;Smallclassname=白色
转换之后就变成了
Product.asp?BigClassName=%BB%E9%C7%EC%B2%BC%D6%C3&Smallclassname=%B0%D7%C9%AB
 
三:如果采集规则正确的话,在管理节点的列表中点击预览会出现采集页面列表,左边的URL是采集的列表页面的URL,如果采集的有分页的话,那么这里会有多项,右边的VIEW预览链接会链接到本列表页所对应的采集内容页列表,此列表页会列表当前列表页对应的每个信息的链接地址,即URL

四:如果采集规则正确的话,但是点预览的时候仍然显示一片空白的话,那么请清空备份的采集数据或者修改匹配正则表达式或者可以尝试精简采集正则,比如
<img src="[!--titlepic--]" width="165" height="103" border="0" / ></a></td>
精简之后
<img src="[!--titlepic--]" width="165"

五:所有的采集正则表达式正则必须有结尾,不能直接以标签结尾,比如下面的信息链接区域正则:
<td height="449" valign="top">[!--smallurl--]
上面的是错误的,正确的可以是下面的
<td height="449" valign="top">[!--smallurl--]<td width="20">&nbsp;</td>


六:采集常见问题解决办法:
1:采集内容页列表预览的时候同样的URL出现了两次,而PIC循环到后面的一半的时候却匹配不到了
解决办法:因为信息页链接正则的匹配可能是贪婪匹配,所以导致了匹配了两次,所以解决的办法就是增加正则的字符,避免被贪婪匹配

2:如果预览的列表都正常,但是正式采集的时候仍然采集不到的时候的时候,其原因是内容页的正则匹配不到内容页的内容,这个在采集内容页列表在点击右边的某个预览的时候你就会发现仍然匹配不到内容的

3:如果采集规则都正常,并且采集页面列表也能正常显示采集的URL,但是采集内容页列表却仍然显示一片空白,而且清空备分的采集数据之后,仍然是空白的话,可以点击审核采集,将之前审核采集来的信息全部删除,再次预览就正常了,这里不明白,为什么清空备分的采集数据之后,点击审核采集里面仍然有采集数据

还有要注意,如果采集的正则需要更多的HTML代码加以区别的话,而且HTML代码之间有空格或换行的话,这个空间或换行最好不删除,也让空格或换行作为过滤的一个条件

相关阅读

测试document与window与body对象的heigh…

2020-10-1027

&lt;HTMLxmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;测试document与window与body对象的height与scrollTop方法返回值的区别测试document与window与body对象的height与scrollTop方法返回值的区别$("#btn").click(function…

删除bom标签或者bom头的php代码

2020-10-1028

有时程序的逻辑代码完全没有一问题,但是就是运行的时候出错,如果出现这种情况,那么有可能就是文件中包含了bom头所导致的,下面给出了php去除bom头的源代码,只要把下面的代码放到一个php的文件中,并且改好目录,然后运行那个文件就可以了//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除=&quot;.&quot;;//修改此行为需要检测的…

小程序的下单与支付的业务流程

2020-10-10220

1:小程序携带商品信息调用第三方服务器的下单API2:第三方服务器下单API对小程序带来的商品作库存量检测3:如果检测通过,第三方服务器就会保存这个订单并且告之小程序下单成功4:小程序调用第三方服务器的支付api5:第三方服务器API调用微信的预订单API[WxPayApi::unifiedOrder](注意第三方服务器是无法完成支付的,这个订单实际是在微信…

日期格式如何转换?

2020-10-10158

日期格式常用的有哪几种?常用的日期格式有YYYY/MM/DD和YYYY-MM-DD,中间的分隔符一般用英文输入法的反斜杠或者短横杠,其中的字母Y是year的简写,表示年,M是month的简写,表示月,D是day的简写,表示日,示例2020/01/01,2020-01-01在excel中如何设置日期格式?在某个单元格内输入上面示例中的任何一种日期格式之后,然后…

小程序倒计时wxml与js

2020-10-1049

小程序倒计时jsPage({data:{windowHeight:654,maxtime:&quot;&quot;,isHiddenLoading:true,isHiddenToast:true,dataList:{},countDownDay:0,countDownHour:0,countDownMinute:0,countDownSecond:0,},/…

小程序列表多个批量倒计时

2020-10-1092

Page({onShow(){letthat=this;vardates={datetime:[{dat:0,name:&#39;zs&#39;},{dat:6,name:&#39;ls&#39;},{dat:10,name:&#39;ww&#39;}]}//console.log(dates)//数据letlen=dates.datetime.length…