今天寫了一個股票的爬蟲,直接抓取的接口,返回時是一個json數組。
用go折騰了半天。
說明:js返回的不是標准json,下標未帶引號,用正則替換了一下。值得做個學習筆記,希望對后來人有幫助
ssname := `[{symbol:"sh600378",code:"600378",name:"昊華科技",trade:"14.940",pricechange:"1.360",changepercent:"10.015",buy:"14.940",sell:"0.000",settlement:"13.580",open:"13.850",high:"14.940",low:"13.610",volume:11316872,amount:164723683,ticktime:"15:00:00",per:23.714,pb:2.454,mktcap:1250755.882506,nmc:302044.28076,turnoverratio:5.59766},{symbol:"sh603322",code:"603322",name:"超訊通信",trade:"21.340",pricechange:"1.940",changepercent:"10.000",buy:"21.340",sell:"0.000",settlement:"19.400",open:"20.010",high:"21.340",low:"20.010",volume:5783940,amount:121778331,ticktime:"15:00:00",per:85.36,pb:7.793,mktcap:334013.68,nmc:334013.68,turnoverratio:3.69534}]`
re := regexp.MustCompile(`([a-zA-z]+):`)
ssname = re.ReplaceAllString(ssname, "\"$1\":")
fmt.Println(ssname)
listStrByte := []byte(ssname)
//jsonObj, eee := gjson.DecodeToJson(listStrByte)
// 這里的數據類型一開始定義成了map數組,折騰半天
var jsonObj []interface{}
eee := json.Unmarshal(listStrByte, &jsonObj)
fmt.Println("抓取結果", jsonObj, eee)