gpt4 book ai didi

GoQuery 选择提取器不工作

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:42 25 4
gpt4 key购买 nike

我正在尝试提取目标属性并添加到 HTML 片段中的 slice

<div class="pagination pagination-responsive">
<ul class="list-unstyled">
<li class="active">
<a rel="start" target="1" href="/s/Cambridge--MA--United-States">1</a>
</li>
<li>
<a rel="next" target="2" href="/s/Cambridge--MA--United-States?page=2">2</a>
</li>
<li>
<a target="3" href="/s/Cambridge--MA--United-States?page=3">3</a>
</li>
<li class="gap"><span class="gap">&hellip;</span>
</li>
<li>
<a target="17" href="/s/Cambridge--MA--United-States?page=17">17</a>
</li>
<li class="next next_page"><a target="2" rel="next" href="/s/Cambridge--MA--United-States?page=2">
<span class="screen-reader-only">Next</span><i class="icon icon-caret-right"></i></a>
</li>
</ul>
</div>
</div>

pageCounts := doc.Find(".pagination-responsive .list-unstyled")
for page := range pageCounts.Nodes {
pageIterator := pageCounts.Eq(page)
li := pageIterator.Find("li a")
href, _ := li.Attr("target")
fmt.Println(href)
}

有人可以指出我在这里可能遗漏了什么吗?

最佳答案

li := pageIterator.Find("li a") 实际上是一个元素序列,但是你只取第一个元素的attr。在这方面它有点像 jquery。您真正想要做的是遍历所有链接,Each 将成为您的 friend 。我发现它比使用 Eq 迭代容易得多。

这段代码对我有用:

var html = `
<div class="pagination pagination-responsive">
<ul class="list-unstyled">
<li class="active">
<a rel="start" target="1" href="/s/Cambridge--MA--United-States">1</a>
</li>
<li>
<a rel="next" target="2" href="/s/Cambridge--MA--United-States?page=2">2</a>
</li>
<li>
<a target="3" href="/s/Cambridge--MA--United-States?page=3">3</a>
</li>
<li class="gap"><span class="gap">&hellip;</span>
</li>
<li>
<a target="17" href="/s/Cambridge--MA--United-States?page=17">17</a>
</li>
<li class="next next_page"><a target="2" rel="next" href="/s/Cambridge--MA--United-States?page=2">
<span class="screen-reader-only">Next</span><i class="icon icon-caret-right"></i></a>
</li>
</ul>
</div>
</div>

`

func main() {
doc, err := goquery.NewDocumentFromReader(strings.NewReader(html))
pageCounts := doc.Find(".pagination-responsive .list-unstyled")
pageCounts.Each(func(_ int, ul *goquery.Selection) {
links := ul.Find("li a")
links.Each(func(_ int, li *goquery.Selection) {
if val, ok := li.Attr("target"); ok {
fmt.Println(val)
}
})
})
}

关于GoQuery 选择提取器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33251406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com