第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何獲取標(biāo)簽的內(nèi)部 HTML 或只是文本?

如何獲取標(biāo)簽的內(nèi)部 HTML 或只是文本?

Go
繁花不似錦 2023-02-21 16:03:50
我們?nèi)绾胃鶕?jù)下面的示例獲取錨文本的值?這是我的代碼。href我可以獲得和title使用的價(jià)值html.ElementNode。我需要僅使用 text 來(lái)獲取文本的值golang.org/x/net/html,而無(wú)需使用其他庫(kù)。示例:從<a href="https:xyz.com">Text XYZ</a>,我想獲得“文本 XYZ”。// html.ElementNode works for getting href and title value but no text value with TextNode. if n.Type == html.TextNode && n.Data == "a" {    for _, a := range n.Attr {        if a.Key == "href" {            text = a.Val        }    }}
查看完整描述

1 回答

?
qq_花開(kāi)花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

給定 HTML:


<a href="http://example.com/1">Go to <b>example</b> 1</a>

<p>Some para text</p>

<a href="http://example.com/2">Go to <b>example</b> 2</a>

你只期待文字嗎?


Go to example 1

Go to example 2

您期望內(nèi)部 HTML 嗎?


Go to <b>example</b>example 1

Go to <b>example</b>example 2

或者,你期待別的嗎?


以下程序僅提供文本或內(nèi)部 HTML。每次找到錨節(jié)點(diǎn)時(shí),它都會(huì)保存該節(jié)點(diǎn),然后繼續(xù)沿著該節(jié)點(diǎn)的樹(shù)向下移動(dòng)。當(dāng)它遇到其他節(jié)點(diǎn)時(shí),它會(huì)檢查保存的節(jié)點(diǎn)并附加 TextNodes 的文本或?qū)⒐?jié)點(diǎn)的 HTML 呈現(xiàn)到緩沖區(qū)。最后,在遍歷所有子節(jié)點(diǎn)并重新遇到保存的錨節(jié)點(diǎn)后,它打印文本字符串和 HTML 緩沖區(qū),重置兩個(gè)變量,然后將錨節(jié)點(diǎn)置零。


我想到了使用緩沖區(qū)和 html.Render,并保存特定節(jié)點(diǎn),從Golang 解析 HTML,提取帶有標(biāo)簽的所有內(nèi)容。


以下內(nèi)容也在Playground中:


package main


import (

    "bytes"

    "fmt"

    "io"

    "strings"


    "golang.org/x/net/html"

)


func main() {

    s := `

    <a href="http://example.com/1">Go to <b>example</b> 1</a>

    <p>Some para text</p>

    <a href="http://example.com/2">Go to <b>example</b> 2</a>

    `


    doc, _ := html.Parse(strings.NewReader(s))


    var nAnchor *html.Node

    var sTxt string

    var bufInnerHtml bytes.Buffer


    w := io.Writer(&bufInnerHtml)


    var f func(*html.Node)

    f = func(n *html.Node) {

        if n.Type == html.ElementNode && n.Data == "a" {

            nAnchor = n

        }


        if nAnchor != nil {

            if n != nAnchor { // don't write the a tag and its attributes

                html.Render(w, n)

            }

            if n.Type == html.TextNode {

                sTxt += n.Data

            }

        }


        for c := n.FirstChild; c != nil; c = c.NextSibling {

            f(c)

        }


        if n == nAnchor {

            fmt.Println("Text:", sTxt)

            fmt.Println("InnerHTML:", bufInnerHtml.String())

            sTxt = ""

            bufInnerHtml.Reset()

            nAnchor = nil

        }

    }

    f(doc)

}

Text: Go to example 1

InnerHTML: Go to <b>example</b>example 1

Text: Go to example 2

InnerHTML: Go to <b>example</b>example 2


查看完整回答
反對(duì) 回復(fù) 2023-02-21
  • 1 回答
  • 0 關(guān)注
  • 141 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)