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

时间:2021-04-06 16:26:58

标签: go goquery

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

2 个答案:

答案 0 :(得分: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())
    })
})

答案 1 :(得分:0)

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

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

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

tks!

相关问题