【发布时间】:2017-09-04 19:36:32
【问题描述】:
我需要从http://www.siriusxm.com/siriusxmhits1 中提取当前正在播放的艺术家和歌曲。我可以使用 Internet Explorer 导航到该网站,但这需要很长时间,所以我尝试使用 WINHTTP.WinHTTPRequest.5.1 和 MSXML2.serverXMLHTTP 但都没有提取我正在寻找的特定数据。我想我已经很接近了,但我错过了一些东西。
下面是 HTML sn-p:
<div id="on-the-air-content" style="display: block;">
<div class="module-content theme-color-content-bg clearfix">
<div id="onair-pdt" style="display: block;">
<img alt="" src="//www.siriusxm.com/albumart/Live/2000/chainsmokers_58C328AC_t.jpg">
<p class="onair-pdt-artist">Chainsmokers/Coldplay</p>
<p class="onair-pdt-song">Something Just Like This</p>
</div>
...
</div>
...
</div>
这是我当前的代码:
Sub GetData()
Dim getArtist As Object
Dim getSong As Object
Set xmHtml = New HTMLDocument
With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", "http://www.siriusxm.com/siriusxmhits1", False
.send
xmHtml.body.innerHTML = .responseText
End With
Set getArtist = xmHtml.getElementById("onair-pdt").getElementsByTagName("p")(0)
MsgBox (getArtist.innerText)
Set getSong = xmHtml.getElementById("onair-pdt").getElementsByTagName("p")(1)
MsgBox (getSong.innerText)
End Sub
如果我激活 Internet Explorer,它将使用以下代码工作,但这对于我需要做的事情来说太长了:
Sub GetData()
Dim DivID As HTMLObjectElement
Dim getArtist As Variant
Dim getSong As Variant
URL = "http://www.siriusxm.com/siriusxmhits1"
With IExplore
.Navigate URL
.Visible = False
Do While .readyState <> 4: DoEvents: Loop
Set doc = .document
Set DivID = doc.getElementById("onair-pdt")
getArtist = DivID.getElementsByClassName("onair-pdt-artist")(0).innerText
getSong = doc.getElementsByClassName("onair-pdt-song")(0).innerText
End With
End Sub
【问题讨论】:
标签: html vba excel web-scraping xmlhttprequest