首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取id下html的内部文本?

如何获取id下html的内部文本?
EN

Stack Overflow用户
提问于 2019-06-19 06:25:01
回答 1查看 284关注 0票数 1

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

这是针对XML代码的。

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2019-06-19 08:52:03

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

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

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

真正的价值似乎是通过JavaScript写入超文本标记语言,这是常见的做法。在页面的顶部有一个JSON对象,可能是根据您的请求从网站后端注入到文档中的。

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档