求助高手,winfrom如何,自动把网页解析成dom。
最近在弄个网页填表的软件。
那这个WebBrowser是必不可少的。
WebBrowser,按我的理解大概是以下几个功能的结合体。
1.下载目标网页地址的html文档。
2.解析下载完的文档(css,js,html,等网络元素),形成一个DOM对象(好像是),给js引擎调用。
3.渲染界面,显示出来给ie可视窗口。
4.HTTP处理功能。(get,post,head)
5.Cookie管理功能。
基本填表的时候,很简单,不太麻烦。网上资料也多。但是这个WebBrowser控件有个非常巨大的问题。就是内存占用过大(开始没事,等运行久了,你会发现他要崩溃,内存在一直涨),导致程序一会就崩溃了,搜索各种解决ie控件的内存占用问题的知识。得出结论,此问题基本无解,算是一个bug吧。
WebBrowser最浪费的cpu和内存,就是界面渲染是罪魁过手。怎么能把界面渲染去掉呢,在后台分析dom元素。
意思就是去掉WebBrowser,也行。提交post用异步提交。
现在有两个库,微软的。winnet,winhttp。
winnet 是ie的底层,能自动管理cookie,
winhttp 是winnet的升级版(好像是),不能自动管理cookie,需要自己实现。
怎么能像浏览器那样,自动组织post数据内容呢,而不用抓包就能实现。就像我们在这里发帖子似的,无需关心里面的post数据,里面的js自动处理。我们就管填完帖子必须的内容,点击提交就发表帖子了。至于是ajax post,还是普通的post都不需关心。
怎么能实现这样的呢。总的意思就是没有UI的浏览器。
有人说直接http模拟不就行了,这个肯定不行,需要抓包(一个网站可以,要是1万个网站,岂不累死)。还有另外的js问题,有个网站加密,解密的。也需要自己分析。如果自动分析出来了,就不需要这些工作。
隐藏ie控件,根本就是跟不隐藏一样。反正目前IE控件内存是个问题,基本无解。
网上找资料,找不到啊,听说这里高人多,能指点一二吗?起码有个头绪。
谢谢!