昨天,一朋友让我帮他做一个 途牛网的数据挖掘. 主要是获取文字还有图片.由于为了方便查看结果,我将数据最后生成到Excel里面.
单独起了一个项目,给他做.要是在我的系统里面做的话,或许更快.昨天花了2个多小时写了这个程序.
源代码下载 :
至于,代码,真的没什么好说的,看看我写的代码,基本上就知道什么这么回事了.透过这个程序说说自己的编程习惯吧.
首先 比较习惯的喜欢 使用 三层 来创建项目的框架 ,由于项目比较简单,就分门别类的几个类,看文件名称就知道这个类是干什么用的,负责业务逻辑,还是负责实体类.
Main 方法 是静态的, 不习惯在Main方法里面 new 对象,所以一般是 在其他类的非静态类 完成 程序的流程,Main 方法只是一个入口,入口要完成开始和结束,用来控制整个程序的流程. 就算内部出了异常,也不允许直接关掉窗体,所以要加上Try Catch. 最后 Console.ReadLine() 让用户输入回车键结束.
中间的任务 MainWork, 其实在这之前呢,应该 还有一件事情要做,就是初始化配置文件. 此类的 基本配置有 log4Net 的配置初始化, Appconfig 里面的常用的静态变量的初始化.为什么这个时候做初始化呢, 因为,如果等到 程序运行过程中,才才发现初始化 有问题, 程序就要再跑一遍,这其中会浪费时间.
所以我一般程序初期就初始化完毕. 为了方便调用, 在 实体类 ModelArgs.cs 这个类比较特殊, 静态类,静态属性,静态方法.全局统一使用,基本上都是只读的属性. 因为 配置文件,一般是只读的. 当然要修改配置文件的情况也是会有的. 为了程序的稳定和安全,一般不这么弄. 有些配置,还可以写到数据库里面去,或者使用临时存储文件, 比如当一个程序调用另外一个程序,需要传递一些值的时候,但是系统本身不大,也不需要数据库,就可以将这些写到 临时文件里面去.用完干之后就删掉.
再说一说,方法的命名. MainWork 就像 大脑 里面经常 调用 WorkAction,ServiceAction ,xxxxAction的 方法,这些是 分支逻辑处理,将比如手和脚.
GetTravelModel, GetXML 等等 Getxxx 就 是 获取数据,填充数据, 还有一些 帮助类, HelperXXX 表示 常用的工具类,这里面的方法经常使用,所以封装在一起. SQLHelper 用于sql语句的调用, CommonHelper 用于公共类调用,这里面 或者是 算法的封装, 或者是 常用文件读写,网络读写的封装.总之就是为了方便调用.
程序设计上, 也是为了以后修改方便,特别是爬虫. 如果把程序写死, 当别人的 网站一改动,我们的程序就要重新发布,这样太麻烦. 所以可以把基本的流程化的东西弄出来,其余的写到配置文件里面.这样不论是 原来的网站进行修改,或者是再 使用到新的一个网站,我们只需要增加配置文件,或者修改配置文件的 方式就可以完成了.
由于,这些都是 个人在开发中总结出来的,所以还有很多不完善的地方,还请大家多多指教. 我的宗旨是:尽量做到程序简单,代码逻辑清楚,结构合理化,不要臃肿.易于维护和方便别人使用.