perplain 2023-08-20 20:22 采纳率: 75%
浏览 1
已结题

go colly的Node能获取到节点内的text值吗?

在获取html页面后,我首先解析的是li节点,然后使用h.DOM.Children().Nodes获取该节点下的所有子节点,

<li>
<img class="headImg" data-src="11111111 " alt="img">
        
                <img class="roleImg" data-src="2222222" alt="img">
        
        <p class="tit">1122334455</p>
        <p class="subTit">上架时间:2023.08.04</p>
        <p class="redirectUrl">#</p>

    </li>
c.OnHTML("body > div.wrap > ul.skinform-news > li ", func(h *colly.HTMLElement) {

    for _, node := range h.DOM.Children().Nodes {
        if node.Attr[0].Val == "roleImg" {
            fmt.Println(node.Attr[1].Val)
        }
    }

})

返回的是Node对象,但我看了下,Node对象中没有获取节点Text的方法,也没有相关属性,下面是colly的Node对象

type Node struct {
    Parent, FirstChild, LastChild, PrevSibling, NextSibling *Node

    Type      NodeType
    DataAtom  atom.Atom
    Data      string
    Namespace string
    Attr      []Attribute
}

我想要从第一个p节点中获取值“1122334455”,如果不改变代码写法,是不是从Node对象中无法获取节点的文字(Text)。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-20 22:04
    关注

    【以下回答由 GPT 生成】

    使用Goquery库可以方便地从Node对象中获取节点的文本值。

    首先,确保已经安装了goquery库。可以使用以下命令来安装:

    go get github.com/PuerkitoBio/goquery
    

    然后,根据Node对象创建一个*goquery.Selection对象:

    selection := goquery.NewDocumentFromNode(node)
    

    接下来,使用Text()方法获取节点的文本值:

    text := selection.Text()
    

    下面是更新后的代码:

    c.OnHTML("body > div.wrap > ul.skinform-news > li", func(h *colly.HTMLElement) {
        for _, node := range h.DOM.Children().Nodes {
            if node.Attr[0].Val == "roleImg" {
                selection := goquery.NewDocumentFromNode(node)
                text := selection.Text()
                fmt.Println(text)
            }
        }
    })
    

    这样可以在不改变代码写法的情况下从Node对象中获取节点的文本值。

    请注意,上述解决方案假设你已经引入了goquery库和colly库,并且已正确设置。如有其他问题,请提供更多详细信息。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月20日

悬赏问题

  • ¥15 matlab使用报错
  • ¥15 如何用BL55072驱动屏幕
  • ¥100 网页利用NC文件数据生成云图
  • ¥15 vivo手机的101root检测通常包括Bootloader状态检测吗,有没有懂的人来回答下?
  • ¥15 c++ 单例模式 在不项目之间的引用问题
  • ¥15 我想在微信名中用上红桃♥️这个表情 可是保存不了 说是有特殊符号或者不支持的语言 需要怎么做呢
  • ¥15 oracle报skip not validate connection
  • ¥15 请问左奇异向量怎么求解呢?
  • ¥15 我有开源,需要二开支付宝小程序流量主,有偿
  • ¥15 Arcgis pro制图