如何使用 Gokogiri 在 Go 中将文本节点转换为字符串?

对于我第一次使用 Go 编程的尝试,我尝试自动从Psiu Puxa下载可爱的壁纸,根据 HTML 帖子中的标题保存图像的文件名。


但是,我还没有找到如何将文本节点的值作为字符串获取。


示例 HTML,简化:


<div class="post">

    <a class="w-inline-block post-name-link" href="/posts/mars-30">

        <h4>#80 Martian Landscape</h4>

    </a>

</div>

<div class="post">

    <a class="w-inline-block post-name-link" href="#">

        <h4><strong>#79 MARTIAN terrain</strong></h4>

    </a>

</div>

我的 Go 包:


package main


import (

    "fmt"

    "net/http"

    "io/ioutil"

    "github.com/moovweb/gokogiri"

)


func main() {

    resp, _ := http.Get("http://psiupuxa3.webflow.io/")

    page, _ := ioutil.ReadAll(resp.Body)

    resp.Body.Close()


    doc, _ := gokogiri.ParseHtml(page)

    res, _ := doc.Search("//div[@class='post']")

    defer doc.Free()


    for i := range res {

        postTitleRes, _ := res[i].Search("a[contains(@class,'post-name-link')]//text()")

        fmt.Printf("%T: %v\n", postTitleRes, postTitleRes)

    }


}

结果:


[]xml.Node: [#80 Martian Landscape]

[]xml.Node: [#79 MARTIAN terrain]

[]xml.Node: [#78 MARTIAN TERRAIN]

#79 MARTIAN terrain在保存文件时,如何获取等作为字符串供以后使用?


我试过了,postTitle := postTitleRes.String()但该方法显然不适用于xml.Node. 我花了一些时间查看 Gokogiri 的源代码,并找到了强制转换为字符串的方法/说明,但我很迷茫,希望得到任何指点。


拉丁的传说
浏览 191回答 1
1回答

慕桂英3389331

那里有一组 xml.Node 结构。您需要访问该数组中包含的节点。如果你确定你有一个元素,那么你可以postTitleRes[0].Content()或捕获所有这些节点:for _, node := range postTitleRes {&nbsp; &nbsp; fmt.Printf("%T: %v\n", node, node.Content())}您可以看到,Content一旦您拥有一个单一的 xml.Node ,该函数应该可供您使用。定义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go