【发布时间】:2020-07-14 21:26:01
【问题描述】:
我是这方面的新手,所以想获得一些指导。我正在尝试在 VBA 中开发一些代码,以降低雅虎金融的期权价格。到目前为止,这是我能够汇总的内容:
Option Explicit
Sub Pull_Option_Price()
Dim URL As String
Dim IE As Object
Dim HTML As Object
Dim OptionPrice As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
URL = "https://ca.finance.yahoo.com/quote/SQ200717C00065000?p=SQ200717C00065000"
IE.Navigate URL
Do Until IE.ReadyState = 4: DoEvents: Loop
Set HTML = CreateObject("HTMLFile")
Debug.Print HTML.Document.getElementbyClassName("Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D
(ib)").innerText
Set IE = Nothing
End Sub
每次我运行代码时,都会在该行收到运行时错误 438:
Debug.Print HTML.Document.getElementbyClassName("Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)").innerText
从目前为止我在各个论坛上阅读的内容来看,我只能在 IE 版本较低(低于 9)的情况下使用 .getElementsbyClassName,而我的 IE 版本是 11,无论出于何种原因,我都无法访问我认为的参考资料将允许我以另一种方式做到这一点。
我还能如何抓取网站以获取期权价格?
【问题讨论】:
-
没有名为
getElementbyClassName的函数 - 它是getElementsByClassName(复数),因为多个元素可以具有相同的类名。 -
您可以使用 Power Query 检索该页面。有两个表格显示摘要列中的各种信息。
标签: excel vba web-scraping