Как получить рейтинг leetcode с помощью goquery

Я хочу получить рейтинг leetcode, но немного знаю о html и JavaScript. После большой попытки я получаю этот вывод.

Рейтинг aQuaYi - Рейтинг: {[{pc.ranking}]}

источник

package main
import (
    "fmt"
    "log"

    "github.com/PuerkitoBio/goquery"
)

func showRanking(username string) {
    URL := fmt.Sprintf("https://leetcode.com/%s", username)
    doc, err := goquery.NewDocument(URL)
    if err != nil {
        log.Fatal(err)
    }

    ranking, _ := doc.Find("div.panel-body").Find("span.ranking").Attr("data-content")

    fmt.Printf("%s's ranking is %v", username, ranking)
}

func main() {
    showRanking("aQuaYi")
}

Пожалуйста, помогите мне закончить этот код, большое спасибо.

1 ответ

func getRanking(username string) string {
    URL := fmt.Sprintf("https://leetcode.com/%s/", username)
    fmt.Println(URL)

    data := getRaw(URL) // or your way to get raw html page down
    str := string(data)
    i := strings.Index(str, "ng-init")
    j := i + strings.Index(str[i:], "ng-cloak")
    str = str[i:j]

    i = strings.Index(str, "(")
    j = strings.Index(str, ")")
    str = str[i:j]

    strs := strings.Split(str, ",")
    ans := strs[5]
    i = strings.Index(ans, "'")
    j = 2 + strings.Index(ans[2:], "'")

    return ans[i+1 : j]
}
Другие вопросы по тегам