goquery:到达另一个元素时停止解析
goquery: stop parsing when another element is reached
假设我有这个 HTML 页面。我想使用 Go and goquery:
解析它
<html>
<head><!--Page header stuff--></head>
<body>
<h1 class="h1-class">Heading 1</h1>
<div class="div-class">Stuff1</div>
<div class="div-class">Stuff2</div>
<h1 class="h1-class">Heading 2</h1>
<div class="div-class">Stuff3</div>
<div class="div-class">Stuff4</div>
</body>
</html>
碰巧,我只想获取标题 2 之前的那些 DIV,而跳过其余部分。此代码非常适合获取 all DIV:
doc := GetGoQueryDocument(url) //Defined elsewhere
doc.Find("div.div-class").Each(func(_ int, theDiv *goquery.Selection){
//do stuff with each theDiv
//The problem is that it finds div.div-class elements below Heading 2.
//I want to skip those.
})
有没有办法告诉 goquery 跳过位于特定标签和类名下的元素?感谢您的任何提示!
是的,其实很简单:
doc.Find(".h1-class").First().NextUntil(".h1-class")
我建议您通读 godoc:https://godoc.org/github.com/PuerkitoBio/goquery
它解释了您可以操纵选择的所有不同方式。
假设我有这个 HTML 页面。我想使用 Go and goquery:
解析它<html>
<head><!--Page header stuff--></head>
<body>
<h1 class="h1-class">Heading 1</h1>
<div class="div-class">Stuff1</div>
<div class="div-class">Stuff2</div>
<h1 class="h1-class">Heading 2</h1>
<div class="div-class">Stuff3</div>
<div class="div-class">Stuff4</div>
</body>
</html>
碰巧,我只想获取标题 2 之前的那些 DIV,而跳过其余部分。此代码非常适合获取 all DIV:
doc := GetGoQueryDocument(url) //Defined elsewhere
doc.Find("div.div-class").Each(func(_ int, theDiv *goquery.Selection){
//do stuff with each theDiv
//The problem is that it finds div.div-class elements below Heading 2.
//I want to skip those.
})
有没有办法告诉 goquery 跳过位于特定标签和类名下的元素?感谢您的任何提示!
是的,其实很简单:
doc.Find(".h1-class").First().NextUntil(".h1-class")
我建议您通读 godoc:https://godoc.org/github.com/PuerkitoBio/goquery
它解释了您可以操纵选择的所有不同方式。