如何使用 goquery 获取 select > option 的值

问题描述

如果有这样的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()方法也不能用于获取

解决方法

您还应该迭代选项。

    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())
    })
})
,

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

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

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

tks!