본문 바로가기
카테고리 없음

[vba] 서울스토어(seoulstore) 크롤링 / Dictionary, JsonConverter

by IT HUB 2020. 9. 8.
728x90
반응형

https://www.seoulstore.com

 

서울스토어

 

www.seoulstore.com

2020-09-07+dirId=102020101&docId=366508624+전체순위검색_추가문의.xlsm
0.07MB

Sub program1472_com()
    ActiveSheet.Pictures.Delete
    Dim URL As String, T As String, PostData As String, cookie As String
    Dim O As Object, items As Object, C As Range
    Dim i As Integer, s As Variant
    Dim key As String, itype As String, value As String
    URL = "https://www.seoulstore.com/api/do/search"
    For Each C In Range(Cells(33), Cells(Rows.Count, 3).End(3))
        PostData = "keyword=" & C
        PostData = PostData & "&start=0"
        PostData = PostData & "&count=12"
        PostData = PostData & "&method=search"
        PostData = PostData & "&accessToken="
        With CreateObject("WinHttp.WinHttpRequest.5.1")
            .Open "POST", URL
            .setRequestHeader "Host""www.seoulstore.com"
            .setRequestHeader "User-Agent""Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0"
            .setRequestHeader "Accept""application/json, text/javascript, */*; q=0.01"
            .setRequestHeader "Accept-Language""ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3"
            .setRequestHeader "Content-Type""application/x-www-form-urlencoded; charset=UTF-8"
            .setRequestHeader "X-Requested-With""XMLHttpRequest"
            .setRequestHeader "Content-Length", Len(PostData)
            .setRequestHeader "Origin""https://www.seoulstore.com"
            .setRequestHeader "Connection""keep-alive"
            .setRequestHeader "Referer", URL
            If Len(cookie) Then .setRequestHeader "Cookie", cookie
            .setRequestHeader "TE""Trailers"
            .send PostData
            .waitForResponse: DoEvents
    '         cookie = SetCookie(cookie, .getAllResponseHeaders)
            T = .responseText
            'T = StrConv(.ResponseBody, vbUnicode)
        End With
        Set O = ParseJson(T)
        For Each items In O("products")("items")
            Debug.Print items("images")("list")
            For i = 0 To items.Count - 1
                key = items.Keys()(i)
                itype = TypeName(items(key)): value = ""
                Select Case itype
                    Case "Dictionary": value = "Dictionary"
                    Case "Collection"
                        For Each s In items(key)
                            If Len(value) Then value = value & ", "
                            value = value & s
                        Next
                    Case Else: value = items(key)
                End Select
                Debug.Print key, value
            Next
            Stop
        Next
    Next
End Sub
 
 
반응형


댓글