【问题标题】:Download data from webpage using vba Excel使用 vba Excel 从网页下载数据
【发布时间】:2015-12-07 03:10:19
【问题描述】:

在这篇文章中,我尝试重新表述我之前的问题。 我正在尝试在 excel 中提取网页中的表格。问题是网页是使用 javascript 生成的,所以当我查看页面源时,我找不到表的定义位置。我想做的是:

  1. 加载页面
  2. 从左侧的第一个菜单中选择“Calcio”选项,然后选择“ITA Serie A”(抱歉,网页是意大利语)
  3. 使用“标准”函数(例如 getElementsByTagName 或 getElementByID)提取表中的数据

到目前为止,我能够加载页面,运行第 2 步的脚本(并且页面已正确更新)。问题是,当我查看页面源时,我找不到我感兴趣的表格(带有标题“ESITO FINALE 1X2”的表格),所以我不知道如何继续在 Excel 中导入表格。

起始页网址为:“https://www.sisal.it/scommesse-matchpoint”。

我的目标是将表格的数据导入到 excel 中,所以如果有完全不同的方法来解决问题,我愿意接受。谢谢!

Sub Control_Sisal()

  Dim htmlPage          As htmlDocument
  Dim strUrl            As String
  Const Title As String = "scommesse"

  strUrl = "https://www.sisal.it/scommesse-matchpoint"

  Call Navigate_Sisal(strUrl, htmlPage, Title)

End Sub

Sub Navigate_Sisal(strUrl As String, htmlPage As htmlDocument, Title As String)

  Dim IE            As Object
  Dim strScript     As String

  Set IE = CreateObject("InternetExplorer.application")  '
  IE.Visible = True
  IE.navigate strUrl

  Do 
     DoEvents 
  Loop Until IE.ReadyState = READYSTATE_COMPLETE 
  '
  ' Run the scripts to get the data
  '
  strScript = "getAlberaturaAntepostManager().clickManifestazione(1, 21)"
  IE.Document.parentWindow.execScript strScript, "jscript"

  Do 
    DoEvents 
  Loop Until IE.ReadyState = READYSTATE_COMPLETE

  Set htmlPage = IE.Document

End Sub

【问题讨论】:

  • 使用 Web 浏览器的开发者工具 (F12) 查看最终生成的 HTML - 您应该能够在那里找到所需的内容。我无法访问该 URL,因此无法更具体。
  • 谢谢蒂姆,我做了类似的事情来获得指令“getAlberaturaAntepostManager().clickManifestazione(1, 21)”。所以现在我的问题是,如果我使用代码Set htmlPage = IE.Document 中的最后一个命令,那么包含htmlPage 的内容是什么?我的意思是,如果在 htmlPage 中我会找到我使用 F12 看到的所有内容,或者只是我在页面源代码中看到的一些内容。对不起,如果问题很简单,但我不是那么好
  • document 对象表示该时间点的整个页面,包括脚本生成的任何内容(假设已完全呈现)。它不一定与您使用“查看源代码”看到的相同。
  • 感谢蒂姆它成功了!如果可以的话,我有一个必然的问题:有时,当我在对象 htmlPage 中导入数据时,脚本指令仍然需要执行。是否有任何“优雅”的解决方案来避免这个问题?目前我在这篇文章中添加了一个计时器VBA Internet Explorer wait for web page to load
  • 一个计时器将起作用,或者您可以创建一个循环来检查作为您正在等待的内容的一部分的特定元素是否存在,并在找到它时退出循环。例如。 stackoverflow.com/questions/12822749/…

标签: javascript html excel vba


【解决方案1】:

这个答案是@TimWilliams 在上述cmets 中给出的答案。我在这里写了答案以结束问题并帮助像我这样的初学者。

document 对象表示该时间点的整个页面,包括脚本生成的任何内容(假设已完全呈现)。它不一定与使用“查看源”显示的内容相同。使用浏览器的开发者工具 (F12) 可以查看最终生成的 HTML 并找到所需的元素(针对我的问题的特定情况的脚本生成表)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 2013-11-27
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多