为了账号安全,请及时绑定邮箱和手机立即绑定

迭代 *goquery.Selection

迭代 *goquery.Selection

Go
qq_遁去的一_1 2021-09-10 17:03:57
我几天前才开始学习围棋,所以请耐心等待。:)我正在从带有goquery. 像这样:package mainimport (    "fmt"    "log"    "github.com/PuerkitoBio/goquery")func ExampleScrape() {    doc, err := goquery.NewDocument("http://lifehacker.com")    if err != nil {        log.Fatal(err)        fmt.Println("fail")    } else {        fmt.Println("got it")    }    h1_text := doc.Find("h1").Text()    fmt.Println(h1_text)}func main() {    ExampleScrape()}这很好用。我无法弄清楚的是如何将doc.Find("h1").Text()选择转换为数组或切片,以便我可以迭代它们(或者,更好的是,弄清楚是否goquery有一个函数)。我确定有办法做到这一点,对吗?我尝试这样做(内部func ExampleScrape):var x []stringdoc.Find("h1").Each(func(i int, s *goquery.Selection) {    append(x, s.Text())})但它不起作用,因为append在“嵌套”/闭包函数中仍然是该函数的本地函数——它不会返回到func ExampleScrape. 然后我尝试了这个:x := doc.Find("h1").Each(func(i int, s *goquery.Selection) {    return s.Text()})for _, i := range x {    fmt.Println(x)}但*goquery.Selection类型不能跨越。有没有办法*goquery.Selection像这样迭代's ?顺便说一下,你们这里的人很棒。我总是被我在这里得到的答案所震撼。如果有人可以解释如何做到这一点,请提前感谢 googolplex。:)
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

我认为如果您使用append得当,您的第一次尝试可能会奏效。 append(x, s.Text())不会改变 x,而是返回一个新的切片。

所以你真的需要这样做:

x = append(x, s.Text())


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信