サイトから取得したJsonがあるかどうかを確認する方法があるかどうかを教えてもらえないかと思っていました。シドニーのKWSサイトで作業していて、誰かが自分のJSONページが何であるかを教えてくれました。見てはhttps://www.bne.com.au/passenger/flights/arrivals-departuresです。そこから出発するためのフライト情報を取得するために必要な助けがあれば素晴らしいです。
バックエンドを調べたところ、情報を取得するためにJavaが使用されていることがわかりました。また、最初にページを読み込んだときにリダイレクトがあることがわかりましたが、その先頭に立つことができました。
ブラウザ(Chromeなど)でWebページhttps://www.bne.com.au/passenger/flights/arrivals-departuresを開き、を押しF12て開発者ツールを開きます。[ネットワーク]タブに移動し、ページを再読み込みして、フィルター文字列としてF5入力するjson
と、リクエストがログに記録されていることがわかります。
ログに記録されたリクエストを調べます。その場合、サイズが最大のリクエストにはフライトデータが含まれています。リクエストを開きます。ここで[ヘッダー]タブにURLが表示されます(UNIXタイムスタンプはnocache
キャッシュを無効にするパラメーターとして送信されます)。
[プレビュー]タブと[応答]タブに応答コンテンツがあります。
これは、そのデータを取得する方法を示すVBAの例です。JSON.basモジュールをJSON処理のためにVBAプロジェクトにインポートします。
Option Explicit
Sub test()
Dim url As String
Dim resp As String
Dim data
Dim state As String
Dim body()
Dim head()
url = "https://www.bne.com.au/sites/default/files/00API-Today.json?nocache=" & CStr(epochTimeStamp(Now))
' Retrieve JSON content
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", url, True
.send
Do Until .readyState = 4: DoEvents: Loop
resp = .responseText
End With
' Parse JSON sample
JSON.Parse resp, data, state
If state = "Error" Then MsgBox "Invalid JSON": End
' Convert JSON to 2D Array
JSON.ToArray data, body, head
' Output to worksheet #1
output head, body, ThisWorkbook.Sheets(1)
MsgBox "Completed"
End Sub
Sub output(head, body, ws As Worksheet)
With ws
.Activate
.Cells.Delete
With .Cells(1, 1)
.Resize(1, UBound(head) - LBound(head) + 1).Value = head
.Offset(1, 0).Resize( _
UBound(body, 1) - LBound(body, 1) + 1, _
UBound(body, 2) - LBound(body, 2) + 1 _
).Value = body
End With
.Columns.AutoFit
End With
End Sub
Function epochTimeStamp(dateTime)
epochTimeStamp = (dateTime - 25569) * 86400
End Function
私の出力は次のとおりです(フラグメント):
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加