gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:23:47 24 4
gpt4 key购买 nike

在我第一次尝试使用 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 的源代码并找到了关于强制转换为字符串的方法/说明,但我很迷茫,希望得到任何指示。

最佳答案

那里有一组 xml.Node 结构。您需要访问该数组中包含的节点。

如果你确定你有一个元素那么你可以

postTitleRes[0].Content()

或捕获所有这些节点:

for _, node := range postTitleRes {
fmt.Printf("%T: %v\n", node, node.Content())
}

您可以看到,一旦您拥有一个单一的 xml.Node,您就应该可以使用 Content 函数。 Definition .

关于go - 如何使用 Gokogiri 将文本节点转换为 Go 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383662/

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