首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gokogiri将文本节点转换为字符串?

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

Stack Overflow用户
提问于 2015-09-03 19:11:13
回答 1查看 616关注 0票数 1

对于我第一次尝试使用Go编程,我试图自动从浦沙下载可爱的壁纸,根据HTML文章中的标题保存带有文件名的图片。

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

示例HTML,简化如下:

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

我的围棋包:

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

}

结果:

代码语言:javascript
复制
[]xml.Node: [#80 Martian Landscape]
[]xml.Node: [#79 MARTIAN terrain]
[]xml.Node: [#78 MARTIAN TERRAIN]

如何获得#79 MARTIAN terrain等字符串,以便以后保存文件时使用?

我尝试过postTitle := postTitleRes.String(),但是这个方法显然不适用于xml.Node。我花了一段时间查看Gokogiri的源代码,并找到了关于胁迫字符串的方法/指令,但我很迷茫,希望得到任何提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-03 19:42:24

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

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

代码语言:javascript
复制
postTitleRes[0].Content()

或者捕获所有这些节点:

代码语言:javascript
复制
for _, node := range postTitleRes {
    fmt.Printf("%T: %v\n", node, node.Content())
}

您可以看到,一旦您有了单数的Content函数,xml.Node函数就应该对您可用。定义

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32383662

复制
相关文章

相似问题

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