2017-01-10 5 views
1

このHTMLページがあるとします。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要素を取得し、残りの部分を省略したいと思います:私はGogoqueryを使用してそれを解析します。

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を伝えるためにどのような方法があります:このコードはすべて divを取得するために素晴らしい作品?あらゆるヒントありがとう!

答えて

2

はい、実際にはかなり簡単:

doc.Find(".h1-class").First().NextUntil(".h1-class") 

私はあなたがgodocを読んで推薦:https://godoc.org/github.com/PuerkitoBio/goquery

それはあなたの選択を操作できるさまざまな方法のすべてを説明しています。

関連する問題