Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4566|回复: 3

求教如何用VBA抓取网页弹出页面iframe数据

[复制链接]
发表于 2016-8-14 11:28 | 显示全部楼层 |阅读模式
本帖最后由 jzht 于 2016-8-15 15:58 编辑

网址:,希望抓取点击后弹出网页数据,根据分析源代码,弹出网页数据表格在iframe里,试了好几种方法,都不能抓取,请大家帮忙分析一下,我自己做的VBA代码如下:

Sub test()
Dim ie, dmt,  i, tb, P, d, dI, r, idmt
Dim dWinFolder As New ShellWindows, oj

Set ie = CreateObject("InternetExplorer.Application")    '创建一个IE对象
With ie
.Visible = True    '显示它

.navigate ""    '加载某个页面
Do Until .ReadyState = 4    '等待页面加载完毕
DoEvents
        Loop
Application.Wait (Now + TimeValue("0:00:30"))
Set dmt = .Document    '将IE浏览器加载的页面文档,赋予dmt变量
        Set dI = dmt.all.tags("div")
For i = 0 To dI.Length - 1    '历遍每个div
If InStr(dI(i).onclick, "Detail_f(0,19,46332151)") > 0 Then    '判断它的内含文本是否有某个关键字
Debug.Print i
Set tb = dI(i)    '符合则捕捉这个div
tb.Click           '符合则点击              
Application.Wait (Now + TimeValue("0:00:10"))
Do Until .ReadyState = 4    '等待页面加载完毕
DoEvents
        Loop
Do
For Each oj In dWinFolder
If InStr(oj.LocationURL, "") > 0 Then Exit Do
Next
DoEvents
        Loop
Set ie = oj
Do Until ie.ReadyState = 4 And ie.Busy = False
DoEvents
            Loop
Set d = ie.Document.frames.Item(0).Document.body
Set P = d.Document.Table(0)
For r = 0 To P.Rows.Length - 1 '历遍其每个行
For j = 0 To P.Rows(r).Cells.Length - 1 '历遍每行的每个单元格
Cells(r + 1, j + 1) = P.Rows(r).Cells(j).innerText '将其innertext写入单元格
Next
Next
End If
Next
End With
MsgBox "完成"
End Sub




测试运行至Set d = ie.Document.frames.Item(0).Document.body语句就错误
发表于 2016-8-14 13:28 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-8-15 15:59 | 显示全部楼层
回复

使用道具 举报

发表于 2019-8-6 16:10 | 显示全部楼层
jzht 发表于 2016-8-15 15:59
已解决,就是效率较差

您好,想请教一下您是如何解决vba抓取iframe下的元素信息,基于ie浏览器,是否可以分享一下,谢谢您。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 03:11 , Processed in 0.264215 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表