goquery: прекратить анализ при достижении другого элемента

Предположим, у меня есть эта HTML-страница. Я хочу разобрать его с помощью Go и 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>

Так получилось, что я хотел бы только получить эти DIV перед заголовком 2 и пропустить остальные. Этот код прекрасно работает для получения всех 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, чтобы пропустить элементы, расположенные под определенным тегом и именем класса? Спасибо за любые советы!

1 ответ

Решение

Да на самом деле довольно просто:

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

Я бы порекомендовал вам прочитать Godoc: https://godoc.org/github.com/PuerkitoBio/goquery

Это объясняет все различные способы, которыми вы можете манипулировать выбором.

Другие вопросы по тегам