javascript - 如何使用 vba 从网页中的表值中正确提取内部文本?
问题描述
不幸的是,我的旧帐户在更改网站主机时被删除了。我在整个网站上寻找解决方案,但只发现人们处理整个表格,而不仅仅是试图获得一个值。我在从以下网页获取带有 innerText 的 Net Assets 时遇到问题:
https://finance.yahoo.com/quote/UMBWX?p=UMBWX
这是我的尝试:
Sub FetchAssets()
Dim HTML As New HTMLDocument, elem As Object, URL As String
URL = https://finance.yahoo.com/quote/UMBWX?p=UMBWX
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
Application.Wait Now + 1 / (24 * 60 * 60# * 2)
.send
Application.Wait Now + 1 / (24 * 60 * 60# * 2)
HTML.body.innerHTML = .responseText
Set elem = HTML.querySelector("NET_ASSETS-value")
MsgBox elem.innerText
End With
End Sub
这种尝试导致:Run-time error '91': Object variable or With block variable not set
我已经尝试了完全相同的代码并与之交换elem.innerText
,elem.innerHTML
它会导致相同的错误。错误发生在 MsgBox 代码行上,它设置 elem 很好。
由于我的声誉低于 10,我无法嵌入图像,但这是网页中的代码行:
<td class="Ta(end) Fw(600) Lh(14px)" data-test="NET_ASSETS-value" data-reactid="89"><span class="Trsdu(0.3s) " data-reactid="90">539.25M</span></td>
解决方案
试试这个
Sub FetchAssets()
Dim html As New HTMLDocument, elem As Object, sURL As String
sURL = "https://finance.yahoo.com/quote/UMBWX?p=UMBWX"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", sURL, False
.send
html.body.innerHTML = .responseText
Set elem = html.querySelector("td[data-test='NET_ASSETS-value']")
MsgBox elem.innerText
End With
End Sub
推荐阅读
- javascript - w3schools 倒数计时器:为什么我的 index.html 文件打开到空白页面而不是计时器?
- python - 根据方案,对于给定的 X 打印数字
- powershell - 父 Powershell 脚本不打印来自 Azure Pipeline 中子脚本的消息
- c - 在 C 中创建一个通用的“函数指针”联合是一个坏主意吗?
- r - R通过函数传递缺少的参数
- sql - 如何使用 Union 更新 SQL 表
- javascript - 我有一个问题,引导网格系统没有根据 getbootstrap 指南中指定的像素大小正确更改列
- javascript - 如何将相同的“选项”元素添加到两个不同的“选择”列表中?
- c# - 如果阻止,则无法将列表发送给其他人
- c++ - 为什么 C++ 没有标准化在整个容器上运行的算法重载?