C# winform中使用WebBrower之类的组件应该应用何种设计模式或者给出一种比较好的控制方案也可
发布网友
发布时间:2023-08-07 10:00
我来回答
共4个回答
热心网友
时间:2023-09-13 08:56
自动抓网页并提取内容,阁下用WebBrowser,我只能说你对正则表达式不熟练。
抓网页:使用WebClient,将网页下载到内存或是磁盘文件。
分析并提取内容:使用正则匹配下载文件的内容,然后提取自己需要的。
这样做的好处
1。躲过无效的js,如果网页存在错误的js,在加载时候会提示错误(浏览器启用调试js功能)。
2。节省下载/加载时间,如果是加载图片,那么图片必须呈现后,而在html中,图片往往都是一个地址,如果你需要这个图片,就单独去下载它,如果不需这个图片,那么你用WebBrowser将其呈现就是无用功!
至于什么ajax,完全可以找到这个html的button,然后触发它的click,当然使用js时候WebBrowser则是更强大一些。
我之前是使用WebClient+WebBrowser完成的。
WebBrowser加载本地下载的网页(也可是简单处理过的网页),然后使用WebBrowser.Document来操作页面的ajax等功能,如果没有ajax的就没使用WebBrowser。
我做的是针对某一站点,如果换了站点就要更换正则表达式。
那么这里要说是设计模式的话,应该有简单工厂吧,使用工厂方法来获取正则表达式的实例。
热心网友
时间:2023-09-13 08:56
任何网页都是WebRequest请求组成的,再复杂也能用他,而且她是最简单最快速控制力最强的解决方案,很多地方不会受约束
webbrowser模拟点击一个是请求响应和视图的现实并没有那么快,并且你要和文档互操作的时候需要使用IE的COM接口
登录了不起是个cookie,还有什么?可以用cookiecontainer直接请求你需要的页面,然后用dom分析器分析网页用xpath分析内容
补充:
不知道你直接操作过cookie没,实际上用WebBrowser操作cookie更麻烦,一个是直接操作请求响应,一个是操作浏览器,复杂度根本不在一个级别上
热心网友
时间:2023-09-13 08:57
我大部分也是在DocumentComplete来驱动的。至于其他方法都没这个好,其他比如还有TitleChange 和StatusChange也可以来驱动。还有在主线程里可以用Xmlhttp。其实在WebBrowser能实现所有JS操作。
热心网友
时间:2023-09-13 08:57
这个有点难!最起码要熟知电脑技术程序软件应用方可。。。路过