为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
拉丁的传说 2021-11-08 09:57:05
对于我第一次使用 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 mainimport (    "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 的源代码,并找到了强制转换为字符串的方法/说明,但我很迷茫,希望得到任何指点。
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

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


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


postTitleRes[0].Content()

或捕获所有这些节点:


for _, node := range postTitleRes {

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

}

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


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信