【发布时间】:2015-12-07 03:10:19
【问题描述】:
在这篇文章中,我尝试重新表述我之前的问题。 我正在尝试在 excel 中提取网页中的表格。问题是网页是使用 javascript 生成的,所以当我查看页面源时,我找不到表的定义位置。我想做的是:
- 加载页面
- 从左侧的第一个菜单中选择“Calcio”选项,然后选择“ITA Serie A”(抱歉,网页是意大利语)
- 使用“标准”函数(例如 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