【问题标题】:Scraping source code of website does not work on VDI抓取网站的源代码在 VDI 上不起作用
【发布时间】:2019-04-23 07:06:38
【问题描述】:

我在使用 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”的方法“文档”失败。

有什么想法来自此错误以及我应该添加什么以在 VDI 上成功运行它?

【问题讨论】:

  • 只是好奇,虚拟机中的IE是什么版本的?
  • @Yane 版本:11.0.9600.19326 与我的本地计算机上的相同
  • 哪一行会报错?我怀疑它:Body = ObjIE.document.Body.innerHTML?
  • 另外,你有潜在的无限循环:当你第一次进入Do循环时,如果你的错误不是0,你正在使用Goto跳出循环然后来回到循环而不重置err 值。所以一旦err 的值不为0,你就有了一个无限循环
  • @Zac yup - 在这一行

标签: excel vba internet-explorer vdi


【解决方案1】:

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

Set ObjIE = CreateObject("InternetExplorer.Application")

我所有问题的解决方案:

Dim IE as SHDocVw.InternetExplorer
Set IE = New InternetExplorerMedium

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

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多