gpt4 book ai didi

excel - 如何在id下获取html的内部文本?

转载 作者:行者123 更新时间:2023-12-04 22:27:15 24 4
gpt4 key购买 nike

我正在尝试在 excel 单元格中的 id 下提取数据拉内部文本。

这是针对 XML 代码的。

Sub getelementbyid()
Dim XMLpage As New MSXML2.XMLHTTP60
Dim hdoc As New MSHTML.HTMLDocument
Dim HBEs As MSHTML.IHTMLElementCollection
Dim HBE As MSHTML.IHTMLElement
Dim ha As String
XMLpage.Open "GET","https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=HAL", False
XMLpage.send
hdoc.body.innerHTML = XMLpage.responseText
ha = hdoc.getelementbyid("open").innerText
Range("K11").Value = ha
Debug.Print ha
End Sub

我期望输出值,但它显示--。

最佳答案

检查响应文本。页面在浏览器中的呈现方式与在 ResponseText 中返回的方式有所不同。

我将 URL 放入浏览器进入开发工具 (F12),找到该元素,并记下 HTML 元素内的数值。

然后我将我们在 VBA 中获得的响应文本转储到一个单元格中,并将整个单元格值复制到 Notepad++ 中。如果你这样做,你会看到#open 元素内的初始值确实是“--”。

真正的值(value)似乎是通过 JavaScript 写入 HTML,这是常见的做法。页面顶部有一个 JSON 对象,大概是根据您的请求从网站后端注入(inject)到文档中的。

所以你必须解析 JSON,而不是 HTML。我已经提供了这样做的代码。现在,可能有更好的方法来做到这一点,我觉得这段代码有点“hacky”,但它可以为您的示例 URL 完成工作。

Sub getelementbyid()
Dim XMLpage As New MSXML2.XMLHTTP60
Dim hdoc As New MSHTML.HTMLDocument

Dim HBEs As MSHTML.IHTMLElementCollection
Dim HBE As MSHTML.IHTMLElement
Dim ha As String
XMLpage.Open "GET", "https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=HAL", False
XMLpage.send

'// sample: ,"open":"681.05",
Dim token As String
token = """open"":"""

Dim startPosition As Integer
startPosition = InStr(1, XMLpage.responseText, token)

Dim endPosition As Integer
endPosition = InStr(startPosition, XMLpage.responseText, ",")

Dim prop As String
prop = Mid(XMLpage.responseText, startPosition, endPosition - startPosition)
prop = Replace(prop, """", vbNullString)
prop = Replace(prop, "open:", vbNullString)

Dim val As Double
val = CDbl(prop)
ha = val

Range("K11").Value = ha
Debug.Print ha
End Sub

关于excel - 如何在id下获取html的内部文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com