首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >goquery不返回预期结果

goquery不返回预期结果
EN

Stack Overflow用户
提问于 2022-05-10 18:16:32
回答 2查看 184关注 0票数 2

神奇的互联网,

我试图使用"github.com/PuerkitoBio/goquery“从html字符串中筛选元素。不幸的是,filter函数没有返回预期的结果。我本想要回一份所有文章的清单,但是.没什么。

代码语言:javascript
复制
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)
}
EN

回答 2

Stack Overflow用户

发布于 2022-05-11 19:56:31

你试图过滤一个空的选择。

从我在问题中看到的情况来看,您可以简单地将Filter替换为Find。所以在你的情况下应该是:

代码语言:javascript
复制
articles := qHtml.Find("article")

有了包含元素的选择之后,就可以使用Filter了。因此,例如,要获得第二篇文章,您可以这样做:

代码语言:javascript
复制
articles := qHtml.Find("article").Filter(":nth-child(2)")

要阅读有关Filter的更多信息,请查看以下资源:

PS:您还可以在单个选择器中将其组合为特定于Find的文章

代码语言:javascript
复制
articles := qHtml.Find("article:nth-child(2)")
票数 2
EN

Stack Overflow用户

发布于 2022-05-12 04:22:09

根据doc

Filter将匹配的元素集合减少为匹配选择器字符串的元素集。它为匹配元素的子集返回一个新的选择对象。

因为在Filter之前,您没有匹配任何东西,这就是为什么得到空结果的原因,因为Filter没有匹配的元素。

在应用Selection之前,必须首先匹配元素或获取Filter节点集。

要解决这个问题而不是Filter,您可以使用FindFindMatcher

代码语言:javascript
复制
searchStr := `article`

articles := qHtml.Find(searchStr)

articles := qHtml.FindMatcher(goquery.Single(searchStr))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72191242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档