我几天前才开始学习围棋,所以请耐心等待。:)我正在从带有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())
- 1 回答
- 0 关注
- 227 浏览
添加回答
举报
0/150
提交
取消