v1.2.0的采集器使用zengl嵌入式编程语言v1.2.2作为脚本解析引擎,下载地址:http://pan.baidu.com/share/link?shareid=326717&uk=940392313  ,进入该链接地址,再进入zengl采集器forDe...

    v1.2.0的采集器使用zengl嵌入式编程语言v1.2.2作为脚本解析引擎,下载地址:http://pan.baidu.com/share/link?shareid=326717&uk=940392313  ,进入该链接地址,再进入zengl采集器forDestoon的网络文件夹,在最下方(百度盘文件列表默认不是按添加时间来显示)可以看到智能采集器v1.2.0公测版.rar,下载即可。

    采集器公开源代码,下载地址请参考 zengl v1.2.2 正式发布版及智能采集器源代码 这篇文章。

    该版本的采集器对zengl_caiji.php和mydetectTitle.php两个接口文件进行了修改,修改后可以用于destoon 4.0 和 destoon 5.0的系统,作者测试了GBK的版本,UTF8的版本理论上应该也可以。

    解压上面的智能采集器v1.2.0公测版.rar压缩包,将zengl_caiji.php和mydetectTitle.php两个接口文件上传到网站根目录,zengl_caiji.php是负责发布数据的接口,mydetectTitle.php是负责检测采集数据的标题是否已经在网站中存在了。可以修改zengl_caiji.php接口文件名,不过也需要对应修改采集器根目录下的初始化脚本.zl,例如将网站根目录中的zengl_caiji.php改名为upload_caiji.php,那么初始化脚本.zl中就需要进行如下修改:

//bltSetInitManageUrl('zengl_caiji.php'); //采集器在服务端的发布接口文件名
bltSetInitManageUrl('upload_caiji.php'); //采集器在服务端的发布接口文件名

    将原来的注释掉,通过bltSetInitManageUrl('upload_caiji.php');来设置新的接口文件名。如果发布接口文件名设置不对,即使显示发布成功,也没有数据,mydetectTitle.php这个文件名是不可以修改的。

    接口部署好后,打开"智能采集器.exe"程序,用法在之前的"智能采集器v1.0.0 安装使用教程""智能采集器v1.0.0 使用入门"中都介绍过了,还有相关的视频教程。所以这里就不多说了。

    下面介绍些常见的问题:

    从采集脚本可以看出,所有的采集工作都是从采集网站的第一页开始采集,一页一页的采集过去,所以对于资讯模块,可能采集上来的数据,越采信息越旧,其实可以通过修改脚本,让他从最后一页开始倒序来采集,这样采集上来的数据就是最新的了,可以修改Module/资讯模块规则.zl脚本:

pagecount = bltArrayInsertString(page_links,remote_url,0); //将当前页链接也压入分页链接数组中
        //for(pageindex = 0 ;pageindex < pagecount && caiji_totalcount < Max_CaijiNum; pageindex++)
        for(pageindex = pagecount - 1 ;pageindex >= 0 && caiji_totalcount < Max_CaijiNum; pageindex--)
            print '分页'+pageindex+':'+page_links[pageindex];

    上面的代码,将原来的for(pageindex = 0 ..... 给注释掉,改为for(pageindex = pagecount - 1 ;pageindex >= 0 ..... 表示从最后一页开始倒序采集,这样就可以保持最新资讯。如果这些分页都采集完了,就会从栏目第二个关键词开始搜索并采集(这个前面提到过),以此类推,还需要注意的是,最后一页并非真正的最后一页,因为阿里巴巴在搜索出某个关键词时,对应的搜索结果中只能看到前几页,目前是前七页,其他页面以省略号的形式看不到了,所以采集器目前最多只能从第七页开始倒序,同样的在正序的时候,也只能从第一页采集到第七页。

    如果想将数据发布到待审核中,可以将采集脚本中发布数据时的status状态字段设为2


图1

    上面的图1中,bltPostData是发布数据到网站的脚本模块函数,第一个红框框中的post[status]由原来的3改为2 ,表示发布后的数据会保持待审核状态,如果是原来的3则表示通过状态,当然有的脚本中,如供应脚本中对应的是 "post[status]",bltSqlGetString('status'), 同样可以将bltSqlGetString('status')强制写成2,默认的bltSqlGetString('status')表示从本地数据库中获取状态信息,一般情况下值都是3 。

    第二个红框框是这里额外添加的,用户可以通过bltInfoBox来查看发布数据到网站后,网站返回的响应数据,例如当发布接口文件不存在,或接口文件名没设置正确时,即使显示发布成功,但是实际上网站并没数据,此时就可以通过上面的bltInfoBox(output)来查看返回的数据,如果返回数据是Not Found的话,就说明接口文件没找到,这里output是上面bltPostData设置的返回数据,所以可以通过bltInfoBox来调试。如果需要使用的话,只需将上面bltInfoBox的两行注释写到脚本里,再取消掉前面的注释号即可。

    为何采集到一半就暂停,不发布了:
 

图2


图3

    图2和图3是暂停时的情况,在日志中会显示系统暂停,在右下角会弹出气泡提示系统暂停,因为用户勾选了采集到本地时提示处理的复选框
 

图4

    可以在处理完本地采集结果后,选择继续,有时候界面没来得及更新,继续按钮还会显示运行中的字样,将鼠标移到该按钮上方,就可以看到继续按钮了。还有一种情况就是用户手动点击了暂停,也是通过继续按钮来让其继续工作。

    为何采集的数据,发布后,没有图片,只有文字:

    因为采集器只负责把数据发布到网站,所有图片的下载都是远端网站来执行,如果DT模块设置中选择了下载远程图片的话,就会在网站服务端下载远程图片,如果没有图片,说明服务端不支持下载远程图片,可以通过DT系统的上传图片对话框的网络图片来测试判断服务端是否支持下载远程图片:
图5

    在网络图片中,http://对应的对话框中输入一个网络图片的地址,选择上传,如果上传失败,则说明服务端的某些配置导致不支持远程下载图片,那么采集发布后的数据自然也就没有图片了。

    另外在采集器的根目录中有个很重要的中间文件:test.xml ,采集器在获取分类信息时,会先将分类信息写入该文件,再从该文件写入到db目录中对应网站的本地数据库中,所以通过查看该文件,可以了解到很多错误信息,比如无法获取分类的原因,当mydetectTitle.php接口文件不存在时,获取分类信息时,日志面板中就会显示test.xml解析错误,打开test.xml文件会看到mydetectTitle.php文件不存在的警告信息,所以如果无法获取到分类信息,或在日志面板中看到test.xml解析错误之类的,就可以打开该文件,或许可以查看到原因,当然不一定能解决所有这类问题,比如有的用户网络环境,不支持curl抓包,那么自然无法进行任何采集,另外用户服务端配置不同,情况也会不同,情况太多了,作者就不一一处理了。前面提到过,作者将源码公开出来了,有C/C++基础的可以查看修改其中的源码,做出自己的采集器。

    最后,作者刚刚开放了bbs.zengl.com 论坛,里面添加了几个板块,有问题的可以到板块里发帖,不过因时间关系,作者可能会隔个几天才能回复,大多是晚上,而且如果问题太难,可能作者也无法解决,请各位谅解。

    OK,到这里,休息,休息一下 o(∩_∩)o~~
上下篇

下一篇: 智能采集器 v1.2.2共享版

上一篇: 智能采集器 4月23日更新采集脚本

相关文章

zengl脚本语法 第一章入门篇

zengl脚本语法 第四章采集入门篇

zengl脚本语法 第二章流程控制篇

智能采集器v1.0.3

智能采集器 4月23日更新采集脚本

智能采集器v1.3.0开源版