第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將 colly 包輸出文本添加到 golang 中的映射

將 colly 包輸出文本添加到 golang 中的映射

Go
寶慕林4294392 2023-03-15 14:52:59
我正在用 colly 包制作一個(gè)網(wǎng)絡(luò)抓取工具,它從一個(gè)網(wǎng)站收集ContestName和ContestTime制作一個(gè) json 文件。所以我喜歡這個(gè)    Contests := make(map[string]map[string]map[string]map[string]string)        Contests["AtCoder"] = make(map[string]map[string]map[string]string)    Contests["AtCoder"]["FutureContests"] = make(map[string]map[string]string)    AtcoderFunc(Contests).................code..........func AtcoderFunc(Contests map[string]map[string]map[string]map[string]string) {    collector := colly.NewCollector(        colly.AllowedDomains("atcoder.jp", "www.atcoder.jp"),    )    // loc, _ := time.LoadLocation("Asia/Calcutta")    // format := "2006-01-02 15:04:05"    // var i int    format := "2006-01-02 15:04:05-0700"    loc, _ := time.LoadLocation("Asia/Calcutta")    for i := 1; i < 10; i++ {        ContestSelTime := fmt.Sprintf("#contest-table-upcoming  div  div  table  tbody  tr:nth-child(%d)  td:nth-child(1)  a", i+1)        ContestSelName := fmt.Sprintf("#contest-table-upcoming  div  div  table  tbody  tr:nth-child(%d)  td:nth-child(2)", i)        // for contest name        collector.OnHTML(ContestSelName, func(element *colly.HTMLElement) {            ContestName := element.ChildText("a")            fmt.Printf("%T \n", ContestName)            fmt.Println(ContestName) // instead of printing i want to add it to the Contests["AtCoder"]["FutureContests"] map and print like json                     })        // for contestTime        collector.OnHTML(ContestSelTime, func(element *colly.HTMLElement) {            ContestStartTime := element.ChildText("time")            parsed_time, _ := time.Parse(format, ContestStartTime)            IST_time := parsed_time.In(loc)            fmt.Println("Time in IST", IST_time) // instead of printing i want to add it to the Contests["AtCoder"]["FutureContests"] map.        })    }但它給出了錯(cuò)誤cannot use (map[string]string literal) (value of type map[string]string) as map[string]map[string]string value in assignment任何想法?
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

錯(cuò)誤在地圖分配中。管理如此嵌套的結(jié)構(gòu)非常困難,但我找到了成功處理它的方法。讓我展示代碼:


package main


import (

    "encoding/json"

    "fmt"

    "strconv"

    "time"


    "github.com/gocolly/colly/v2"

)


type contest struct{}


func AtcoderFunc(contests map[string]map[string]map[string]string) {

    collector := colly.NewCollector(

        colly.AllowedDomains("atcoder.jp", "www.atcoder.jp"),

    )


    format := "2006-01-02 15:04:05-0700"

    loc, _ := time.LoadLocation("Asia/Calcutta")


    contests["UpcomingContest"] = make(map[string]map[string]string)


    for i := 1; i < 3; i++ {

        rawI := strconv.Itoa(i)

        contests["UpcomingContest"][rawI] = make(map[string]string)


        contestSelTime := fmt.Sprintf("#contest-table-upcoming  div  div  table  tbody  tr:nth-child(%d)  td:nth-child(1)  a", i+1)

        contestSelName := fmt.Sprintf("#contest-table-upcoming  div  div  table  tbody  tr:nth-child(%d)  td:nth-child(2)", i)


        // for contest name

        collector.OnHTML(contestSelName, func(element *colly.HTMLElement) {

            contestName := element.ChildText("a")

            contests["UpcomingContest"][rawI]["Name"] = contestName

        })


        // for contestTime

        collector.OnHTML(contestSelTime, func(element *colly.HTMLElement) {

            ContestStartTime := element.ChildText("time")

            parsed_time, _ := time.Parse(format, ContestStartTime)

            IST_time := parsed_time.In(loc)

            contests["UpcomingContest"][rawI]["Time"] = fmt.Sprint(IST_time)

        })

    }


    collector.OnRequest(func(r *colly.Request) {

        fmt.Println("Visiting", r.URL.String())

    })


    collector.Visit("https://atcoder.jp/contests")

}


func main() {

    contests := make(map[string]map[string]map[string]map[string]string)

    contests["AtCoder"] = make(map[string]map[string]map[string]string)


    AtcoderFunc(contests["AtCoder"])


    data, _ := json.MarshalIndent(contests, "", "  ")

    fmt.Println(string(data))

}

我或多或少保留了你的結(jié)構(gòu)。除了解決這個(gè)問(wèn)題之外,我通過(guò)更改一些名稱并刪除未使用的語(yǔ)句來(lái)稍微重構(gòu)了您的示例。最后,我使用MarshalIndent函數(shù)美化了打印到終端上的 JSON 字符串。

讓我知道是否也適合你!


查看完整回答
反對(duì) 回復(fù) 2023-03-15
  • 1 回答
  • 0 關(guān)注
  • 96 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)