|
本帖最后由 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语句就错误
|
|