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

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

Golang Gokogiri 遞歸 xpath 異常

Golang Gokogiri 遞歸 xpath 異常

Go
LEATH 2021-08-10 16:17:27
我試圖對 html 文檔執行 xpath 操作。我想做一個兩級 xpath 查詢。html文件“index.html”如下:<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <div class="head">        <div class="area">            <div class="value">10</div>        </div>        <div class="area">            <div class="value">20</div>        </div>        <div class="area">            <div class="value">30</div>        </div>    </div></body></html>我想首先使用 class="area" 獲取所有 div,然后使用 Gokogiri 在 golang 中使用 class="value" 遞歸獲取其中的 div。我的go代碼如下:package mainimport (    "fmt"    "io/ioutil"    "github.com/moovweb/gokogiri"    "github.com/moovweb/gokogiri/xpath")func main() {    content, _ := ioutil.ReadFile("index.html")    doc, _ := gokogiri.ParseHtml(content)    defer doc.Free()    xps := xpath.Compile("//div[@class='head']/div[@class='area']")    xpw := xpath.Compile("//div[@class='value']")    ss, _ := doc.Root().Search(xps)    for _, s := range ss {        ww, _ := s.Search(xpw)        for _, w := range ww {            fmt.Println(w.InnerHtml())        }    }}但是,我得到的輸出很奇怪:102030102030102030我打算得到:102030我想遞歸搜索 xpath 模式。我認為我的二級 xpath 模式有問題??磥恚业牡诙?xpath 再次在整個文檔中搜索,而不是在 class="area" 的單個 div 中搜索。我該怎么做遞歸 xpath 模式搜索?我很感激任何幫助。
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

來自任何節點的 XPath 搜索仍然可以搜索整個樹。


如果你只想搜索子樹,你可以用 a 開始表達式.(假設你仍然想要后代或自我),否則使用精確路徑。


xps := xpath.Compile("//div[@class='head']/div[@class='area']")

xpw := xpath.Compile(".//div[@class='value']")


// this works in your example case

// xpw := xpath.Compile("div[@class='value']")

// as does this

// xpw := xpath.Compile("./div[@class='value']")


ss, _ := doc.Root().Search(xps)

for _, s := range ss {

    ww, _ := s.Search(xpw)

    for _, w := range ww {

        fmt.Println(w.InnerHtml())

    }

}

印刷:


10

20

30


查看完整回答
反對 回復 2021-08-10
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

您的第二個查詢//div[@class='value']將選擇文檔中任何位置的 div,而不管父元素如何。相反,嘗試div[@class='value']。


查看完整回答
反對 回復 2021-08-10
  • 2 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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