goquery 过滤器未返回预期结果

标签 go goquery

神奇的互联网,

我正在尝试使用“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/

相关文章:

regex - 去正则表达式 : finding next item after an occurence

go - 如何确定选择器是在第一个还是最后一个位置

go - 无法从 *goquery.Selection 中选择直接子项

dictionary - 你能有一张没有值(value)的 map 吗?

interface - 类型上的 Golang 接口(interface)

json - 在 Golang 中为复杂的 JSON 数组创建结构

google-app-engine - 有没有办法以交互方式为 Go GAE 应用程序创建新的数据存储实体类型?

html - 如何使用 goquery 从 HTML 页面获取简单文本?

go - 使用goquery查找值包含空格的类

go - 如何使用 goquery 检索子元素的完整 HTML?