#json #vba #web-scraping
#json #vba #очистка веб-страниц
Вопрос:
Я продолжаю получать недопустимый JSON из своего кода.
Код выглядит следующим образом. Я не знаю, в чем проблема
Sub Getcustoms2()
Dim JSON As Object
Dim ws As Worksheet, results(), i As Long, s As String
returnshipvalue = "20L10KX154i0001"
MyURL = "firstIndex=0amp;recordCountPerPage=10amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;cargMtNo=" amp; returnshipvalue
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoDtl.do", False
.setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.setRequestHeader "Accept-Encoding", "gzip, deflate, br"
.send MyURL
Debug.Print .responseText
End With
End Sub
.responseText выдает мне только недопустимый JSON.
Для справки, исходный URL—адрес сайта https://unipass.customs.go.kr/csp/index.do и я пытаюсь наскрести сведения о конкретном номере BL. общий код выглядит следующим образом. (верхняя часть относится к главному номеру BL NFPWP023)
Sub Getcustoms2()
Dim JSON As Object
Dim ws As Worksheet, results(), i As Long, s As String
Dim shipvalue As String, custom As String, MyURL As String
Dim BL As String, returnshipvalue As String
Dim LastRow As Long
Dim testarray()
LastRow = Worksheets("Master_BL").Cells(rows.Count, "A").End(xlUp).Row
i = 4
For i = 4 To 4
BL = Cells(i, 1).Value
' Debug.Print BL
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoLst.do", False
.setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.setRequestHeader "Accept-Encoding", "gzip, deflate, br"
.setRequestHeader "Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"
.send "firstIndex=0amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;recordCountPerPage=10amp;qryTp=2amp;cargMtNo=amp;mblNo=" amp; BL amp; "amp;hblNo=amp;blYy=2020"
'Debug.Print .responseText
Set JSON = JsonConverter.ParseJson(.responseText)
End With
If JSON("count") = "0" Then
returnshipvalue = "empty"
Else
returnshipvalue = JSON("resultList")(1)("cargMtNo")
'Debug.Print returnshipvalue
MyURL = "firstIndex=0amp;recordCountPerPage=10amp;page=1amp;pageIndex=1amp;pageSize=10amp;pageUnit=10amp;cargMtNo=" amp; returnshipvalue
'Debug.Print MyURL
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", "https://unipass.customs.go.kr/csp/myc/bsopspptinfo/cscllgstinfo/ImpCargPrgsInfoMtCtr/retrieveImpCargPrgsInfoDtl.do", False
.setRequestHeader "Accept", "application/json, text/javascript, */*; q=0.01"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.setRequestHeader "Accept-Encoding", "gzip, deflate, br"
' .setRequestHeader "Cookie", "MYC_RCNT_MENU=
수입화물 진행정보
; WMONID=DMzwDfgcRNX; MagicLineSession=PhY21XbKet7wH3C0oRfw; JSESSIONID=0069nXlwjdxrmEna0gft9oKhXcSd3_nxlpAQb-Bq7M7s9HGGOIMrE9PNE6B-vT5pv7PfKf7wKR3NhO4rcFzR_EtJG4dYsYiEuStnmqX5ZvBi1HUkhDrR6noY4ki76jba6Vh-:csp31"
' .setRequestHeader "Referer", "https://unipass.customs.go.kr/csp/index.do"
' .setRequestHeader "Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"
.send MyURL
Debug.Print .responseText
Set JSON = JsonConverter.ParseJson(.responseText)
End With
Debug.Print JSON("impStateRsltVo")("prgsStts")
Cells(i, 2).Value = JSON("impStateRsltVo")("prgsStts")
Cells(i, 3).Value = JSON("resultListL")(1)("cargTrcnRelaBsopTpcd")
Cells(i, 4).Value = JSON("resultListL")(1)("prcsDttm")
Cells(i, 5).Value = JSON("resultListL")(2)("cargTrcnRelaBsopTpcd")
Cells(i, 6).Value = JSON("resultListL")(2)("prcsDttm")
Set JSON = Nothing
End If
Next i
End Sub
Заранее большое вам спасибо.
Я пробовал все разные типы заголовков запросов, но это не работает.
Комментарии:
1. Первая часть вашего кода выдает содержащийся
resultListL
в нем ответ json, поэтому я не вижу, в чем на самом деле проблема.2. Проблема во второй части. Он не выдает ответ json