Windows-машина:
Как уже упоминалось, сделан запрос POST, который возвращает JSON, который вы можете проанализировать.Возвращенный словарь имеет странную разметку, поэтому вам придется потратить на это время.Я использую парсер json (jsonconverter.bas), который после добавления в ваш проект вам также нужно перейти в VBE> Инструменты> Ссылки> Добавить ссылку на Microsoft Scripting Runtime.
Option Explicit
Public Sub GetInfo()
Dim sResponse As String, json As Object
With CreateObject("MSXML2.XMLHTTP")
.Open "POST ", "https://mwatch.boursakuwait.com.kw/default.aspx/getData", False
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.setRequestHeader "Content-Type", "application/json; charset=utf-8"
.send
sResponse = .responseText
End With
Set json = JsonConverter.ParseJson(sResponse) 'dictionary
'handle code
Stop
End Sub
Если вы печатаете JSON («d») вы получите строку, которая очищает элементы:
Пример:
Если вы хотите использовать синхронизированный цикл с Internet ExplorerНиже приведен пример:
Option Explicit
Public Sub GetInfo()
Dim ie As New InternetExplorer, t As Date, table As Object, clipboard As Object, ws As Worksheet
Const MAX_WAIT_SEC As Long = 20
Set ws = ThisWorkbook.Worksheets("Sheet1")
With ie
.Visible = True
.Navigate2 "https://mwatch.boursakuwait.com.kw/default.aspx/AllShares"
While .Busy Or .readyState < 4: DoEvents: Wend
t = Timer
Do
DoEvents
On Error Resume Next
Set table = ie.document.querySelector("#tblMarketData")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While InStr(.document.body.innerHTML, "No data available in table") > 0
If Not table Is Nothing Then
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
clipboard.SetText table.outerHTML
clipboard.PutInClipboard
ws.Cells(1, 1).PasteSpecial
End If
.Quit
End With
End Sub
Mac:
Я бы поменял языки.Например к питону.Я рад добавить сценарий для этого при желании.