- 超级版主
- 积分
- 4530
- 学习力
-
- 教学分
-
- 技术分
-
- 魅力值
-
- 影响力
-
- 消费券
- Ti币
- 好友
- 记录
- 日志
- 分享
- 在线时间
- 小时
- 最后登录
- 1970-1-1
- 月度优秀
- 次
- 管理次数
- 次
|

楼主 |
发表于 2012-8-27 00:00:24
|
显示全部楼层
本帖最后由 xmyjk 于 2012-8-29 09:55 编辑
(2)表单和表单控件对象
表单form对象,有一个方法比较重要,就是submit,这个方法提供了表单的提交的动作。如果我们捕捉页面的提交按钮非常困难,有时候只要对表单,执行submit方法,表单也是可以提交的,不需去点击提交按钮。
表单控件,文本输入类控件,最常用就是value的属性了,通过这个属性,可以往文本框里面添加文本。
单选框、复选框,常用的就是checked属性了,如果为true就是被选中了,或者直接使用click方法也行。
下拉列表呢,如果是单选列表框,可通过selectedIndex属性去设置选中项(下拉选项,从1开始编号,如2就是选择下拉列表的第二个选项),也可以通过value属性,直接把value指定为要选定的option的value即可,但多选列表框不可用这两个属性。另外,所有类别的列表框,都可以通过其内含对象集合options(),设置某个options(x)的selected属性为true,来设置选中项。
还是以百度首页为示例,我们用程序模拟键入查询数据“exceltip”,然后提交查询为演示吧。- Sub test()
- Dim ie, dmt, fm
- Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象
- With ie
- .Visible = True '显示它
- .navigate "http://www.baidu.com" '加载某个页面
- Do Until .ReadyState = 4 '等待页面加载完毕
- DoEvents
- Loop
- Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量
- Set fm = dmt.forms("f") '用表单的名称f,捕捉表单对象
- dmt.all("kw").Value = "exceltip" '用搜索栏的id”kw”捕捉它,并键入exceltip
- dmt.all.tags("input")(3).Click '用“百度一下”按钮的索引号捕捉它,并模拟按钮的点击
- 'fm.submit '模拟表单的提交,不一定要click
- End With
- End Sub
复制代码 (3)Table 对象
表格对象,也是我们提取网页数据,最常打交道的对象了。其内含rows对象集合,可以使我们访问表格内的每行,每个row对象还内含cells对象集合,使我们可以访问其每行的每个单元格,读取每个单元格的innertext属性即可获取我们所需每个单元格的文本。
另外,常用的属性还有length,这个类似我们VBA里面的count,都是返回某个对象的数量。
我们以提取东方财富网的限售股解禁清单的table为例,URL:http://data.eastmoney.com/dxf/default.html。- Sub test()
- Dim ie, dmt, tb, i&, j&
- Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象
- With ie
- .Visible = True '显示它
- .navigate "http://data.eastmoney.com/dxf/default.html" '加载某个页面
- Do Until .ReadyState = 4 '等待页面加载完毕
- DoEvents
- Loop
- Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量
- Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象
- For i = 0 To tb.Rows.Length - 1 '历遍其每个行
- For j = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格
- Cells(i + 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格
- Next
- Next
- End With
- End Sub
复制代码 通过上面的代码,这个解禁清单就被我们提取下来了。
|
|