亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

net/html 解析文檔,無論如何都返回 nil *html.Node

net/html 解析文檔,無論如何都返回 nil *html.Node

Go
慕妹3146593 2022-01-04 09:55:35
我正在嘗試處理一個 html 文檔。事情是golang.org/x/net/html的Parse回報*html.Node與nil價值,err也是零,這是一種奇怪的,因為如果事情沒有被處理Parse正確,我應該得到一個錯誤!這是我的代碼:package mainimport (    "bytes"    "golang.org/x/net/html"    "io/ioutil"    "log")func main() {    html, err := ioutil.ReadFile("html/simple_01.html")    if e != nil {        fmt.Fatal(e)    }    doc, err := html.Parse(bytes.NewReader(html))    if err != nil {        log.Fatal(err)    }    // locate <body>    var body *html.Node    for s := doc.NextSibling; s != nil; s = s.NextSibling {        if s.Data == "body" {            body = s            break        }    }    log.Println(body)}log.Println(body)打印nil。還打印docprints nil,這很奇怪。這是我正在測試的 HTML 文檔<!DOCTYPE html><html><head>    <meta charset='utf-8'>    <title>Sample page - 01</title></head><body>    <p>Aspernatur vel molestiae eius sed sunt doloremque. Ipsa sed voluptate expedita tempore id. Ab nobis delectus magnam.</p>    <p>Beatae id mollitia nesciunt nesciunt qui explicabo cum. Aspernatur est molestiae laudantium assumenda consequuntur. Odit mollitia non inventore iusto. Id nihil voluptatem vitae. Fugit odio dolores atque sed.</p>    <p>Qui dolorem ipsum fugit vitae consequuntur suscipit debitis iste. Dignissimos impedit nobis quas facilis. Quia dignissimos perspiciatis quia debitis. Rerum beatae repellat architecto nostrum nulla facere rerum.</p>    <p>Quas natus ad qui excepturi dolorem. Quas dolorum dolores voluptatem distinctio quisquam culpa et. Ipsam voluptatem suscipit earum reprehenderit. Quos laudantium occaecati quis similique. Numquam rerum sunt rerum et necessitatibus. Laboriosam modi iure praesentium voluptates atque adipisci et.</p>    <p>Blanditiis dolores nemo quos voluptatem quo quia modi. Quia et alias nesciunt sint voluptatum omnis. Nihil minima ipsa magnam qui amet ea. Blanditiis laborum nihil tempora aliquam.</p></body></html>我究竟做錯了什么?
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

您的代碼示例中有幾個拼寫錯誤,但主要問題是您正在嘗試獲取根節點的下一個兄弟節點。您首先需要到達 html 標記,然后從那里轉到第一個子項,然后循環遍歷其兄弟項:


package main


import (

    "bytes"

    "golang.org/x/net/html"

    "io/ioutil"

    "log"

)


func main() {

    htmlfile, err := ioutil.ReadFile("html/simple_01.html")

    if err != nil {

        log.Fatal(err)

    }


    doc, err := html.Parse(bytes.NewReader(htmlfile))

    if err != nil {

        log.Fatal(err)

    }


    var htmlTag = doc.FirstChild.NextSibling

    var body *html.Node

    for s := htmlTag.FirstChild; s != nil; s = s.NextSibling {

        if s.Data == "body" {

            body = s

            break

        }

    }

    log.Println(body)

}


查看完整回答
反對 回復 2022-01-04
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號