问题描述
如果有这样的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!