如何使用VBA访问动态渲染的弹出窗口的源代码?

时间:2019-06-24 23:35:27

标签: javascript ajax vba dom web-scraping

我正在使用VBA抓取Web数据。我尝试访问的数据需要与javascript交互。具体来说,我必须单击一个可动态打开某种弹出窗口的链接。该网页是专有的,因此我无法共享整个源代码,但是链接的onclick属性是

onclick = RichFaces.ajax(form1 *****)

这使页面看起来正在呈现某种形式的表单。主页上有一个名为form1的元素,但默认情况下它不包含我需要抓取的信息。

单击链接后,将显示一个弹出窗口(也许是一个框架?),原始网页变灰,并且该弹出窗口处于活动状态并且位于屏幕的前面。

我可以轻松地右键单击弹出窗口并获取其源代码,包括我想抓取的信息,但仅通过引用我用来打开弹出窗口的页面的源代码,就无法使用VBA访问该信息。

我的VBA代码可以归结为以下命令

Dim ie As InternetExplorer

ie = openweb(**** base url of page I want to scrape ***) 'openweb is a function that opens an ie object and navigates to the provided url

ie.document.getElementById(**** id of element that calls the javascript which opens the popup when clicked ****).click

waitready ie 'waitready is a function that waits until the passed internet explorer object is finished loading

msgbox ie.document.Body.innerHTML 'This is the line of code that DOESN'T work. I want it to display the source code that i see when I right click the popup, but instead I just get the source code of the background page.

浏览器可以轻松访问基本页面以及弹出窗口的源代码,因此VBA似乎也可以毫无问题地从弹出窗口中提取数据,我只是无法弄清楚了解如何访问它。

为了澄清(作为对那些标记为“偏离主题”的人的回应),我不是在尝试调试提供的代码。提供的代码有效。我想知道浏览器在哪里存储弹出源,以及如何通过VBA访问该源。有人对“ richfaces.ajax”有什么了解吗,他们可以在这里引导我正确的方向?

注意:我使用*表示我基本上是在这里省略信息,或者是在描述下面的内容。

0 个答案:

没有答案