如果有这样的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)
})
我还可以获得选项的文本((,如下所示:
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((方法中存在一个exists并输入元素的val。
tks!