网站抓取源代码不适用于VDI

时间:2019-04-23 07:06:39

标签: excel vba internet-explorer vdi

我在Citrix Virtual Desktop上使用VBA从网站提取数据时遇到问题。

我首先在本地桌面上编写了代码,而且效果很好-HTML源已提取到Excel中的单元格中。 在VDI上,IE可以正常打开网站。

代码:

Sub GetBody()
Dim Body As String
the_start:

Set ObjIE = CreateObject("InternetExplorer.Application")
ObjIE.Visible = False

ObjIE.navigate ("https://pl.wikipedia.org/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna")

    Do
    DoEvents

        If Err.Number <> 0 Then
            ObjIE.Quit
            Set ObjIE = Nothing
        GoTo the_start:
        End If

    Loop Until ObjIE.readyState = 4

    Body = ObjIE.document.Body.innerHTML
    Cells(1, 1).Value = Body

End Sub

当我尝试在VDI上运行此代码时,出现以下错误:

运行时错误'-2147467259(80004005)':对象'IWebBrowser2'的方法'Document'失败。

有什么想法可以指出此错误的根源以及我应该添加些什么才能在VDI上成功运行它?

1 个答案:

答案 0 :(得分:1)

我已经做了一些注释中提到的更改(例如更改了无限循环等),并且还遇到了另一个错误(自动化错误,所调用的对象已与其客户端断开连接。)以前,我在此将IE声明为对象。下面的行:

import functools
functools.reduce(lambda acc, y: acc + y[1], array, 0) / len(array)

我所有问题的忠告:

Set ObjIE = CreateObject("InternetExplorer.Application")

感谢大家参与此主题,非常感谢您的帮助!