繼上次爬蟲抓Ajax資料的問題,在抓資料後又陸續有其他問題,
(1) 能抓的資料長度是否有限制?我看Debug.Print中資料有被截斷,大概都只能抓到1000多字,請問這有什麼建議的處理方式嗎?
(2) 用以下寫法抓了幾個網頁的資料後發現雖然看起來是Json格式,但想用網路上教的JsonConverter解析一直失敗(Err.Raise 10001, “JSONConverter”, json_ParseErrorMessage(JsonString, json_Index, “Expecting ‘{‘ or ‘[‘”)),但我不確定原因是不是key:value中的value沒有雙括號,如果有知道原因/解法的人可以分享嗎~
(其中一個測試網頁:https://app.launchdarkly.com/sdk/evalx/5afa3d7607a72221591aeb73/users/eyJrZXkiOiJtYXJrZXRpbmdFbmdpbmVlcmluZyIsImN1c3RvbSI6eyJjb2hvcnQiOjg3LCJsb2NhdGlvbiI6Imh0dHBzOi8vd3d3LmF0bGFzc2lhbi5jb20vdHJ1c3QifX0)
Dim myXML As Object
Set myXML = CreateObject("Microsoft.XMLHTTP")
With myXML
.Open "GET", URL3, False
.setRequestHeader "Content-Type", "application/json;charset=utf-8"
.send
Debug.Print (.responseText)
End With
Dim Response As String
Dim JsonObject As Object
Response = myXML.responseText
Set JsonObject = JsonConverter.ParseJson(Response)
謝謝~~
Debug.Print 是有字數 "顯示限制" 的.
可以試試用這個把所有字 copy 出來,再自己放入 notepad 看
Function CopyToClipbox(strText)
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText strText
.PutInClipboard
End With
End Function
用點時間及心機再看看之前給出那條對岸link.
好的,目前這個函數我還沒試成功,找時間再來研究,對岸那條link內容很多,本來想說碰到什麼問題再從裡面去找,但看起來還是要從頭看到尾比較好,謝謝你!~
這樣,對岸 link 入面也有介紹如何把得回來的 json 拆解的
Sub test()
a = "gnkldsjgkljklg"
CopyToClipbox a
End Sub
Function CopyToClipbox(strText)
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText strText
.PutInClipboard
End With
End Function
今天試好了,感謝你~~
(1) 要先引用Microsoft Forms 2.0 Object Library (FM20.DLL)
(2) 如果將CopyToClipbox寫為Function,等執行完整個Sub剪貼簿會是複製不到資料,但如果直接在Sub內寫入程式碼,執行完後剪貼簿會有完整資料~Good~結果貼到Word中竟然180多頁
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText strText
.PutInClipboard
End With
其實用這個 function 是給你作斷點來做測試的,因為程序完成後是不再需要這個 function 了,所以我一般不會把這個寫入 sub 內的.其實只需要知道能否取出資料便可以了,跟隨便是處理取出來的 json 作拆解吧.
對~所以取出資料後就把它註解掉了,只是覺得很有趣,順便觀察程式碼放的位置或方式對結果的影響,謝謝你~