学做网页,javascript研究,PHP,VB,C#,游戏心得,心情故事,网站开发

做一个自己摘抄数据(抓取)的工具

做一个自己摘抄数据和工具

有这么一些软件,也就是建一个数据库,规则不详,格式不详。反正就是一堆东西。然后做一个查询界面,可以输入查询条件,然后检索出来的结果列表,放在一个 TreeView 控件里。然后用户点击选取某一行,得到一个ID,以这个ID去库里查出所属记录的其它字段,比方说名称啊,号码啊,地址啊之类的,把这些字段生成一个文件,为了好看或者说为了图省事,生成的这个文件是个HTML结构的文件,放在当前路径或系统的TEMP 文件夹里,然后在软件界面隐藏一个 IE,需要显示详细内容时就显示出来,读出这个HTML,用户看完点个“返回”,就再次将这个IE隐藏,再去 TreeView 里去查询。如果者N次,软件美其名曰:某某信息系统或者某某数据库。

这样的软件通常是国内的朋友写的,比较偷懒,而这种软件最恨的就是把别人数据库拿走。因为软件本身不值钱,值钱的就是这个数据库里的数据。为了防止盗版,做了一些加密的东东,诸如加密狗、用户认证之类的一大堆。碰到这样的软件,从外围去攻它的数据库是不太现实的——也许别的高手会,可惜,我不会。:(

现在我手上就有这么一个软件,包含了一个几百M的数据库,看了一下数据库内容(主要是头信息),根本闹不清是什么数据库的——要是ACCESS就简单了,呵呵。
然后就想办法理解这个东东究竟是什么数据库,以便我拿相应的数据库驱动来读取。试了N种,结论是不行。(一开始我就觉得不太可能的,因为数据表文件的头信息里啥也没有)

最后我就看出了软件的可攻破的地方了。对了,就是那个HTML文件。既然那个HTML文件是固定的,文件里的内容虽然只有一条,但那是一条完整的信息,如果将这个文件保存下来,能把所有的数据遍历一遍,我就将得到这个数据库。而我要做的,就是写一个程序,模拟鼠标操作,把所有的记录都点一遍。这个,我能做到。

于是写了一个软件。软件暂且命名为“动作录放器”吧。

软件分为“记录动作”和“重放记录”两大块。

“记录动作”这一块就是将一定时间段内的鼠标坐标与点击状态进行记录

实现原理,通过API实时获得鼠标坐标,然后捕获一个键盘事件。由键盘指定这个动作是按下、单击或双击

按下——是指按住鼠标不松手。(这个动作是用来拖动滚动条的,它的作用在下面说)

记录下来的轨迹做成一条记录,存在ListBox里。

把一段记录记下来之后,就可以保存了。利用读取功能,随时都能调出这个操作集合。

“重放记录”就是把记下来的轨迹再放出来。这里有一些参数要设定

重现次数:也就是循环多少次。用于翻页重复执行
拖动步进:就是说当TreeView 一页显示的行数不足本页行数时,要有一个拖动滚动条的动作。这个动作也要真实的做出来。不然没办法采集完整
时间间隔:这个是用于调整点击按键的时间的,因为有可能鼠标点过去,目标控件反应不过来,造成点击无效

有了这些参数,鼠标就会自动去重复先前设定的事了。

最后设一个“提取文件”,用于当一个步骤周期完成后,把生成的那个HTML文件给保存到内建的文件里。

软件做成后,它果然可以自动的去完成抓数据这一枯燥的事情。虽然慢一点,但毕竟它解决了。

评论: 0 | 引用: 0 | 阅读: 183
发表评论
昵 称: 密 码:
网 址: 邮 箱:
选 项:    
内 容: