首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel :在Excel中输出WinHTTPRequest的结果?

Excel :在Excel中输出WinHTTPRequest的结果?
EN

Stack Overflow用户
提问于 2016-01-07 19:32:16
回答 1查看 8.4K关注 0票数 0

如何在Excel中输出WinHTTPRequest的结果?

例如,以下代码从网页中查询Apple的股票报价,但它没有输出任何内容:

代码语言:javascript
复制
Sub GetQuotes()

     Dim XMLHTTP As Object, html As Object, pontod As Object

     On Error Resume Next
     Set oHtml = New HTMLDocument
     With CreateObject("WINHTTP.WinHTTPRequest.5.1")
         .Open "GET", "http://www.reuters.com/finance/stocks/overview?symbol=AAPL.O", False
         .send
         oHtml.body.innerHTML = .responseText
     End With

     'Price
     Set pontod = oHtml.getElementsByClassName("sectionQuote nasdaqChange")(0).getElementsByTagName("span")(1)
     MsgBox pontod.innerText

End Sub

虽然这对于名称来说是完美的:

代码语言:javascript
复制
Sub GetQuotes2()

     Dim XMLHTTP As Object, html As Object, pontod As Object

     On Error Resume Next
     Set oHtml = New HTMLDocument
     With CreateObject("WINHTTP.WinHTTPRequest.5.1")
         .Open "GET", "http://www.reuters.com/finance/stocks/overview?symbol=AAPL.O", False
         .send
         oHtml.body.innerHTML = .responseText
     End With

     'Name
     Set pontod = oHtml.getElementById("sectionTitle").getElementsByTagName("h1")(0)
     MsgBox pontod.innerText

End Sub

我希望能够获取整个页面并在其中查找特定的HTML元素,但是如何从查询中看到整个响应呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 21:40:53

如前所述,getElementsByClassName方法不适用于XML请求。

然而,通过查看您想要抓取的网页,您可以通过使用下面一行来解决这个问题:

代码语言:javascript
复制
Set pontod = oHtml.getElementById("headerQuoteContainer").getElementsByTagName("span")(1)

而不是这个:

代码语言:javascript
复制
Set pontod = oHtml.getElementsByClassName("sectionQuote nasdaqChange")(0).getElementsByTagName("span")(1)

您可以从网页的HTML结构中观察到:

..。您的价格不仅是具有类名sectionQuotenasdaqChange的第一个div的第二个span元素,也是具有id headerQuoteContainer的唯一对象的第二个span元素。

因此,对经典的getElementsByClassName使用无效的方法getElementById() (这是一个有效的getElementById()方法,但不是当HTML是XML时),从那里刮掉它将避免使用无效的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34663611

复制
相关文章

相似问题

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