-1

如果有这样的html:

<select name="" id="selectxzq">
    <option value="">-chose-one-</option>
    <option value="44">A-chose</option>
    <option value="14">B-chose</option>
    <option value="39">C-chose</option>
    <option value="4">D-chose</option>
</select>

当我写这样的代码时:

...
    body, err := ioutil.ReadAll(resp.Body)
    rspHtml := mahonia.NewDecoder("UTF-8").ConvertString(string(body))
    doc, err := goquery.NewDocumentFromReader(strings.NewReader(rspHtml))
    if err != nil {
        log.Fatalln(err)
    }
    // Find the review items
    doc.Find("#selectxzq").Each(func(i int, s *goquery.Selection) {
        optionT := s.Find("option").Text()
        fmt.Printf("Review %d:  %s  \n", i, optionT)
    })

我还可以获得选项的 text() ,如下所示:

Review 0: -chose-one-A-choseB-choseC-choseD-chose

但我不知道如何通过使用 goquery 来获取选项的值,.Attr() 方法也不能用来获取值

4

2 回答 2

0

最后,为了获得我使用这种方式的价值

val, exists := option.Attr("value")

关键是,有一个存在并在 Attr() 方法中输入元素的 val。

谢谢!

于 2021-04-07T01:16:00.490 回答
0

您还应该迭代选项。

    doc.Find("#selectxzq").Each(func(i int, s *goquery.Selection) {
       s.Find("option").Each(func(i int, selection *goquery.Selection) {
         fmt.Printf("Review %d:  %s %s \n", i,selection.AttrOr("value",""), selection.Text())
    })
})
于 2021-04-06T23:43:21.940 回答