因为最近项目需要,所以接触到了网页爬取。
- 1. HttpWebRequest
初期接触的都是一些比较简单的网页,
- 2. WebBrower控件
后面接触到一些复杂的网页,模拟登录一套比较难时限,所以采用了webbrower控件,直接用户手动登录,登录后程序再自动完成后续操作。
- 3. SHDocVw.InternetExplorer
这个在网上搜索一下有很多,一些基本操作都有提到,如:获取IE、打开指定URL、获取控件、执行控件click、执行JS等。
但要实现自动化,一个最重要的就是判断当前页面加载完毕,这个网上提及到的比较少,下面是在网上辛苦搜集的一些方法:
- ReadyState
判断到ReadyState==tagREADYSTATE.READYSTATE_COMPLETE,则是加载完成。
但是在实际使用过程中有些情况(比如某些页面的form提交查询)ReadyState是不会发生变化的,及状态一直是complete,所以此种判断不准确。
- StatusText
判断StatusText是否包含“完成 ”,如果包含则说明页面加载完成,不包含则未加载完成。
- DocumentComplete事件
当页面完成加载的时候都会触发DocumentComplete事件,所以我们可以通过DocumentComplete设置信号量来实现。但此方法不能判断iframe是否加载完毕。
时间: 2024-10-14 03:00:21