v1.3.0将完整源代码开源出来,目的是为了方便用户能随心所欲的修改和使用采集器,同时能够更好的了解zengl Api接口的使用方法,v1.2.0公测版时,虽然也发布过源代码,但是那时候的源代码需要自己配置wxwidgets之类的环境,所以那时的代码仅起到参考作用,v1.3.0的源代码将所有依赖库全部配置好,打包在一个压缩包里,同时发布到github上,进入源代码项目后直接生成就行,无需做额外的配置。
之前的v1.2.2之所以做成共享版,纯粹只是为了限制采集器不被过度使用,v1.3.0开源出来只是为了配合zengl编程语言v1.4.0的版本,能让用户通过采集器的源代码更好的了解zengl语言的嵌入式使用方法。
v1.3.0使用的是zengl嵌入式脚本语言v1.4.0的版本,引入了脚本调试功能,所有的采集脚本由共享版的加密格式改为非加密格式,方便用户参考这些脚本来编写出自己的采集脚本。
采集器使用的是C++来开发的,如果需要修改它的代码,最好对C++和wxWidgets(C++的图形开发库)有一定的了解,由于代码已经完全公开,所以作者可能以后不会抽太多的时间去维护这些脚本,也不保证这些采集脚本长期有效。(通过修改源代码,可以根据需要将其改成其他的CMS的采集器)
采集器发布版地址为:
http://pan.baidu.com/share/link?shareid=326717&uk=940392313 (这里面按修改时间排序,可以查看到所有的采集器发布版的压缩包,发布版就是指:可以在没有安装任何调试工具的普通用户的机子上直接运行的程式,如果你对源代码不敢兴趣,只想使用软件,就可以使用该发布版本,里面包含了最新的
智能采集器v1.3.0开源版.rar的压缩包),发布版里有help.chm的帮助手册,可以根据手册来查看采集器的使用方法,在之前的v1.0.0版本时也做过一个视频教程。
采集器源代码的下载地址:
https://github.com/zenglong/gui-caiji (该链接是github的项目地址,可以选择右侧的Download Zip来下载源代码,也可以在git shell里输入
git clone https://github.com/zenglong/gui-caiji.git 命令将整个仓库抓取下来)
采集器源代码在百度盘的下载地址:
http://pan.baidu.com/s/1FXRvu (该链接里虽然文件夹显示的是采集器v1.2.0,但是里面也包含了v1.3.0的完整压缩包,v1.3.0源码压缩包其实就是github上zip压缩包重命名而来)
源代码压缩包里有个readme文件,该文件的内容可以直接在github.com上查看到,内容如下:
本系统源代码只支持 vs2008,vs2010及更高版本的编译器编译,低于vs2008的编译器,请自行拷贝源代码,进行环境配置
先进入wxWidgets-2.9.2\build\msw目录,选择该目录里的wx_vc9.sln,然后编译它的Debug版本(在配置管理器选择Debug,然后生成解决方案,可以生成22个项目,如果出现某个项目生成失败,可以再生成一次)。
接着进入wxsqlite3-1.9.9\build目录,选择该目录里的wxsqlite3_vc9.sln,然后同样编译它的Debug版本。该解决方案里有两个项目,分别生成它们的库文件即可。
上面这两个依赖库的项目配置都是做好的,直接右键生成就行。
最后进入source目录,选择该目录里的gui-caiji.sln,直接生成智能采集器(对应gui-caiji项目)的Debug版即可。
如果想生成发布版本,则只需在上面的wxWidgets,wxsqlite3,gui-caiji项目的配置管理器里选择和生成Release方案即可。
作者测试过的编译器包括:Windows XP下的vs2008 ,Win7下的vs2010 (vs2010直接导入vs2008的sln解决方案即可)
需要注意的是:请将项目都放置于非中文,非空格路径下,在win7的vs2010下,如果有中文,有可能出现找不到文件的错误。
智能采集器作者:zenglong
智能采集器官网:www.zengl.com |
编译源代码的话,最好将压缩包解压到一个比较大的盘符下(路径里最好不要有中文字符和空格字符),源代码的压缩包只有20M左右,但是解压并且编译完后,会占掉2G左右的磁盘空间,主要是wxWidgets的22个项目生成的库文件和调试文件非常占空间,所以请确保有足够的磁盘空间。至于编译过程都比较傻瓜化,对于wxWidgets和wxsqlite3直接生成解决方案即可,gui-caiji.sln的解决方案只需生成其中的gui-caiji主项目即可。
wxWidgets项目在压缩包里都是精简过的,去掉了和linux有关的编译文件,也去掉了低于vs2008的项目配置文件,如果不精简,压缩包可能会更大(以前一直没开源,很大程度是因为wxWidgets太大,只有精简后才有可能和自己的项目一起打包)。
wxWidgets解决方案打开后,可以在配置管理器里看到如下几个配置:
图1
只要选择红框框里的Debug和Release配置即可,其余的都无需生成,因为采集器链接的是静态库。
在源代码根目录下还可以看到一个libcurl-7.18.0-win32-msvc目录,这个里面没有源代码,只有curl抓包的dll动态链接库和一些开发头文件,所以这个文件夹里无需生成什么东东,只是辅助编译采集器用的。
在采集器里有个脚本调试命令输入框:
图2
正常情况下,在输入框里输入命令不会有什么效果,必须先在采集额外功能里开启脚本调试:
图3
然后采集脚本运行的时候,就会在一开始中断下来:
图4
此时就可以在调试框里输入各种调试命令了,可以通过h命令来查看帮助:
图5
可以看出来这些命令和zengl嵌入式编程语言v1.4.0命令行程式的调试命令差不多(可以参考zengl语言里有关v1.4.0调试相关的文章)
下断点的时候,需要输入脚本的完整相对路径,例如要在资讯模块规则.zl脚本的17行下断点,需要进行如下输入:
图6
上面在输入框里输入了b Module/资讯模块规则.zl 17的命令,Module/资讯模块规则.zl是完整的相对路径,17是行号,如果设置成功,右侧就会显示"设置断点成功",如果不能在此处下断点(可能原因是该行没有对应的虚拟汇编指令),则会提示一些相关的错误信息。
可以通过B命令查看断点是否设置成功:
图7
上面最左侧中括号里的是断点索引,然后是下断点的文件相对路径和行号,N:0表示中断次数为0即无限中断(可以用N命令配合断点索引来设置某断点的中断次数),D:enable表示启用该断点(可以用D命令配合断点索引来禁用某断点)。
可以输入c命令继续,然后资讯模块脚本在运行到17行时就会中断,然后可以输入一些p命令来查看变量信息:
图8
上面就显示了脚本里Max_CaijiNum变量的值为2,该变量对应用户设置的最大采集量。
如果变量信息过长的话,最好用P命令将信息输出到对话框来显示,而不要用p命令,因为普通log日志文本框里一次显示的信息有限,一次性输出内容过多可能会产生一些异常(比如让你的程序卡在那里,因为普通文本框承受消化不了那么多的文本信息),下图显示了P命令的效果:
图9
上图显示P命令将content变量的值输出到打印调试信息的对话框里了,建议尽量使用P命令来显示变量信息,如果你确实知道某变量的值不会太长,比如整数变量等,就可以用p命令。
还可以用s命令来单步步入,和通过T命令来查看当前执行的行号,与函数堆栈调用信息:
图10
上图里,s命令单步步入脚本的clsArt类的AddToDb函数,然后通过T命令显示出当前运行的行号为156,该函数是从85行调用进来的。
上面是一部分调试命令的用法,其余的调试命令限于篇幅就不多说了。
所有和采集器调试有关的C++代码都位于source\gui-caiji\global.cpp的global_debug_break函数里,可以在其中查看到和zengl Api调试有关的接口的使用方法。
这些调试功能不一定做的很全,可以自行调整C++源代码,通过zengl Api接口来增加更多的交互式调试功能。
当然你也可以完全不用这些调试功能,可以直接像之前的版本那样,通过printf模块函数,print指令,bltInfoBox模块函数等来进行采集脚本的调试。
以上就是v1.3.0版本的相关介绍。
授人以鱼,不如授之以渔,开源最大的意义就在于,用户可以通过源代码研究原理,并创造出属于自己的东西。
OK,到这里,休息,休息一下 o(∩_∩)o~~