C# 引用SHDocVw 实现模拟网页操作
因为最近项目需要,所以接触到了网页爬取。
- 1. HttpWebRequest
初期接触的都是一些比较简单的网页,通过Fiddler抓包分析后,就能模拟进行http请求,进行想要的操作。
- 2. WebBrower控件
后面接触到一些复杂的网页,模拟登录一套比较难实现,并且网站是加密的,Fiddler抓包后根本分析不出来,所以采用了webbrower控件,直接用户手动登录,登录后程序再自动完成后续操作。
- 3. SHDocVw.InternetExplorer
再后来,遇到有些问题webbrower解决不了(点击按钮后无正确响应,不知道是iframe的原因还是跨域js的问题),就在网站找到了这个。
这个在网上搜索一下有很多,一些基本操作都有提到,如:获取IE、打开指定URL、获取控件、执行控件click、执行JS等。
但要实现自动化,一个最重要的就是判断当前页面加载完毕,这个网上提及到的比较少,下面是在网上辛苦搜集的一些方法:
- ReadyState
判断到ReadyState==tagREADYSTATE.READYSTATE_COMPLETE,则是加载完成。
但是在实际使用过程中有些情况(比如某些页面的form提交查询)ReadyState是不会发生变化的,及状态一直是complete,所以此种判断不准确。
- StatusText
判断StatusText是否包含“完成 ”,如果包含则说明页面加载完成,不包含则未加载完成。
- DocumentComplete事件
当页面完成加载的时候都会触发DocumentComplete事件,所以我们可以通过DocumentComplete设置信号量来实现。
C# 引用SHDocVw 实现模拟网页操作的更多相关文章
- c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇
这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都知道,我们在访问网站时,是有两种方式的,POST和GET方式, ...
- C#获取窗口,模拟按键操作
C#获取窗口,模拟按键操作,实现计算器模拟操作.首先引用. using System.Runtime.InteropServices; 使用DllImport引入两个函数: // Get a hand ...
- winform中webBrowser模拟网页操作中遇到的问题
我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下: 先说 ...
- PHP模拟链表操作
PHP模拟链表操作 一.总结 1.类成员用的是-> 2.对象节点相连的话,因为是对象,所以不用取地址符号 3.数组传递参数的时候传引用的方法 ,& 二.PHP模拟链表操作 代码一: /* ...
- HTML 事件(四) 模拟事件操作
本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ...
- Android随笔之——模拟按键操作的几种方式
前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使 ...
- 【软件编程】乐易贵宾VIP教程 - JS改写+网页操作系列教程
JS改写系列教程: 1.MD5加密改写教程(爱拍网登录)2.解密如何快速找到真确的js加密算法3.多重MD5加密改写教程(5173登录)4.DZ论坛登录加密改写5.唯品会手机登录加密改写6.新浪微博密 ...
- 第一回写的用arraylist模拟栈操作
package hashMap; import java.util.ArrayList; import d.Student; /** * 用ArrayList模拟栈操作 * @author zhuji ...
- c语言学习,模拟栈操作
1.stack.c模拟栈操作函数的实现 #include<stdio.h> #include<stdlib.h> ; static char *stack;//数据栈 ;//栈 ...
随机推荐
- 转载:遍历Map的四种方法
http://www.cnblogs.com/kristain/articles/2033566.html 遍历Map的四种方法 public static void main(String[] ar ...
- Default Web Site
win7上设置默认website的物理路径
- sql server 2008中id如何设为自增
通过 IDENTITY 来设置 参数有2个,一个是“初始值” 一个是“增量”.默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值. create table web_produ ...
- jQuery选择器上下文
- devpress GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用 zt
1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageComboBox控件 3.绑定数据 ; i < ; i++) { //如果取值时 ...
- Python 实现网络爬虫小程序
Python很简洁,也很强大,作为兴趣,值得一学! 下面这个程序实现的是从一个网站上下载图片,根据自己需要可以进行修改 import re import urllib def gethtml(ur ...
- 剪花布条 --HDOJ 2087
剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- AppFabric 版本区分
目前CSDN上可以下载到的 AppFabric有两个版本: 1, WindowsServerAppFabricSetup_x64_6.1.exe, 2010/12/3 发布的, 不推荐使用,Wi ...
- webstorage调查资料汇总
在调查webstorage的过程中,一步一步了解了各种缓存或存储机制,local storage本地存储,application cache离线应用存储,http cache是http本身自带的缓存机 ...
- EJB 总结学习(1)
总结1: 以下面这行代码为例: PersonDaoBeanRemote pdb = (PersonDaoBeanRemote)ctx.lookup("PersonDaoBean/remote ...