我正在嘗試使用VBA導航到網頁,填寫一些信息,單擊按鈕,移到下一頁並收集一些結果信息。這是我遇到的問題:代碼經歷了前幾個步驟,但是當它試圖解析第二個頁面的html時,它會從第一個頁面返回HTML。出於某種原因,即使屏幕上顯示了正確的頁面(具有所需的信息),WebBrowser.Document中的HTML也不會隨着新的屏幕加載而改變。我試過強迫我等待頁面加載,但這似乎沒有任何區別。代碼如下:VBA:從導航到的頁面獲取HTML數據通過點擊
Sub SnowLoad(Latitude As String, Longitude As String, State As String)
Dim MyHTML_Element As IHTMLElement
Dim HTMLDoc As HTMLDocument
Dim MyURL As String
Dim SnowTag As String
Dim SnowPos As Long
SnowTag = "Load"
On Error GoTo Err_Clear
MyURL = "http://snowload.atcouncil.org/"
''open new explorer
Dim MyBrowser As New InternetExplorer
MyBrowser.Silent = True
''navigate to page
MyBrowser.navigate MyURL
MyBrowser.Visible = True
''wait until ready
Do
DoEvents
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
HTMLDoc.all.optionCoordinate_LATLON.Click
HTMLDoc.all.coordinate_lat.Value = Latitude
HTMLDoc.all.coordinate_lon.Value = Longitude
Set elems = HTMLDoc.getElementsByTagName("button")
For Each e In elems
If (e.getAttribute("class") = "btn") Then
e.Click
Exit For
End If
Next e
Do
DoEvents
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set elems = HTMLDoc.getElementsByTagName("p")
For Each e In elems
Debug.Print e.innerHTML
If InStr(e.innerHTML, SnowTag) Then
SnowPos = InStr(e.innerHTML, SnowTag)
Range("SnowPosition").Value = SnowPos
Exit For
End If
Next e
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub
我對於我的生活無法弄清楚如何獲取第二頁上顯示的信息。似乎沒有任何數量的谷歌搜索可以產生答案或類似的問題。它可能與使用按鈕導航代替實際調用.navigate有關嗎?
我們可以看到HTML?這聽起來像是兩件事之一,即使你的代碼頁面實際上並未完全加載。新頁面位於框架/ iFrame中。或者別的什麼,看到網站或HTML應該有所幫助。 –
我似乎無法弄清楚如何將正確格式化的HTML轉換爲原始文章(當我粘貼時它會變成火車殘骸)。這裏是網站: [雪鏈接](http://snowload.atcouncil.org/index.php/component/vcpsnowload/item) 我不熟悉HTML,所以我不完全確定是否任何一個值得注意。 – Tsnorthern
您是否試圖返回特定區域的降雪的psf? –