我從這個頁面抓取表數據有問題[http://www.eex.com/en/market-data/power/derivatives-market/phelix-futures]。我用這個代碼,但不刮任何數據:使用基於XMLHTTP對象的VBA刮動態網頁
Public Sub ScrapTableData()
Dim sURL As String
Dim XMLHttpRequest As XMLHTTP
Dim HTMLDoc As New HTMLDocument
Dim elc As HTMLHtmlElement
Dim i As Integer
sURL = "http://www.eex.com/en/market-data/power/derivatives-market/phelix-futures"
Set XMLHttpRequest = New MSXML2.XMLHTTP
XMLHttpRequest.Open "GET", sURL, False
XMLHttpRequest.responseXML.async = False
XMLHttpRequest.send
Do While XMLHttpRequest.Status <> 200
DoEvents
Loop
While XMLHttpRequest.ReadyState <> 4
DoEvents
Wend
HTMLDoc.body.innerHTML = XMLHttpRequest.responseText
' Tables
Dim tbl As HTMLTable, row As HTMLTableRow, cell As HTMLTableCell
i = 1
For Each tbl In HTMLDoc.getElementsByTagName("table")
For Each row In tbl.Rows
For Each cell In row.Cells
ActiveSheet.Cells(i, 5) = cell.innerText
i = i + 1
Next
Next
Next
End Sub
我的代碼沒有找到HTML table
標籤。
另外,如果我使用這部分代碼,沒有列出所有的HTML標籤(例如HTML DIV
標籤)和HTML描述6個按鈕:
i = 0
Dim elc As HTMLHtmlElement
For Each elc In HTMLDoc.all
Worksheets("Tables").Range("A1").Offset(i, 0) = elc.tagName
i = i + 1
Next
6個按鈕:年,季度,月, ...,日
我需要模擬點擊它們來顯示(刮)不同的表的數據。
數據動態添加到頁面加載後 - 你不能用這種方法刮這樣的頁面,因爲XMLHTTP只取初始頁面的源代碼:它不會執行任何動態更新。改爲嘗試自動化IE。 –