神奇的互联网,
我正在尝试使用“github.com/PuerkitoBio/goquery”从 html 字符串中过滤元素。不幸的是,过滤函数没有返回预期的结果。我本来希望得到所有文章的列表,但结果却是……什么也没有。
package main
import (
"fmt"
"os"
"strings"
"github.com/PuerkitoBio/goquery"
)
var html = `
<section>
<article>
<h1>Article 1</h1>
<p>Text for article #1</p>
</article>
<article>
<h1>Article 2</h1>
<p>Text for article #2</p>
</article>
</section>
`
func main() {
qHtml, err := goquery.NewDocumentFromReader(strings.NewReader(html))
if err != nil {
panic(err)
}
articles := qHtml.Filter(`article`)
fmt.Println(articles.Nodes)
goquery.Render(os.Stdout, articles)
}
最佳答案
您正在尝试过滤空的选择。
据我所知,您在问题中尝试执行的操作,只需将 Filter
替换为 Find
即可。所以在你的情况下它将是:
articles := qHtml.Find("article")
一旦您选择了包含元素的内容,就可以使用过滤器
。因此,例如,要获取第二篇文章,您可以执行以下操作:
articles := qHtml.Find("article").Filter(":nth-child(2)")
要了解有关过滤器
的更多信息,请查看以下资源:
PS
:您还可以将其组合在单个选择器中以查找
特定文章
articles := qHtml.Find("article:nth-child(2)")
关于goquery 过滤器未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72191242/