我试图对 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 main
import (
"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())
}
}
}
但是,我得到的输出很奇怪:
10
20
30
10
20
30
10
20
30
我打算得到:
10
20
30
我想递归搜索 xpath 模式。我认为我的二级 xpath 模式有问题。看来,我的第二级 xpath 再次在整个文档中搜索,而不是在 class="area" 的单个 div 中搜索。我该怎么做递归 xpath 模式搜索?我很感激任何帮助。
慕田峪9158850
慕桂英3389331
相关分类