我正在尝试在Excel VBA中进行一些web抓取。下面是我遇到问题的代码部分:
IE.Navigate URL
Do
DoEvents
Loop While IE.ReadyState <> 4 Or IE.Busy = True
Set doc = IE.document
运行后,此doc
包含的html中仍有未执行的JavasScript。这是尚未执行的脚本的签名:
<SCRIPT type=text/javascript>
goosSearchPage.Initialize(...)...;
</SCRIPT>
我可以通过执行Application.Wait(Now + TimeValue(x))
来等待执行,但这确实不能令人满意,因为脚本执行的时间根据输入的不同而变化很大。
有没有一种方法可以等待脚本完成计算,或者直接在doc
对象中计算脚本?
发布于 2013-10-18 19:38:51
实际上,您可以使用ie窗口来评估javascript函数。但是你必须设置一个回调函数,因为函数将被异步计算。
发布于 2020-08-22 10:17:23
这篇文章很老了,但既然我已经发现了如何做到这一点,我也会回答这个问题,作为对我自己的回复。
只需指向您希望在jQuery脚本运行后出现的内容,使用JavaScript通过IE自动化触发所需的事件,然后执行循环以等待所需的内容出现。
'This will trigger the jQuery event.
Doc.parentWindow.execScript "$('#optionbox').trigger('change')"
'This is the code that will make you wait. It's surprisingly efficient
Do While InStrB(Doc.getElementById("optionbox").innerHTML, "<desired html tag>") = 0
DoEvents
Loop
https://stackoverflow.com/questions/13029708
复制相似问题