Как мне получить 2-й элемент h2 в Go

#go #web-scraping #html-parsing

#Вперед #очистка веб-страниц #html-синтаксический анализ

Вопрос:

У меня возникла проблема с поиском второго элемента h2 для отображения на странице. Я отлично нахожу первый, но я не уверен, как получить второй. Я не уверен, могу ли я использовать атрибуты class="" , которые мне помогут, поэтому я не уверен, могу ли я добавить это, и я просто не знаю.

Вот 2 элемента h2 в HTML, которые здесь уместны:

 <h2><a class="white" href="/department/men/">SHOP MEN'S DEPARTMENT</a></h2>

// Somewhere down below vv

<h2 class="indentlr notranslate" itemprop="name">Space Hippie 04 Volt Mens Running Shoe (Grey/Black/Volt/Ice Blue) Free Shipping</h2>
  

Я хочу напечатать текст между вторым тегом h2: мужские кроссовки Space Hippie 04 Volt (серый / черный / Volt / Ice Blue) Бесплатная доставка

Вот мой код:

       // Previous request

if res.StatusCode >= 200 amp;amp; res.StatusCode <= 299 {
        dataInBytes, err := ioutil.ReadAll(res.Body)

        pageContent := string(dataInBytes)

        if err != nil {
            log.Fatal(err)
        }

        // Find a substr
        h2Index := strings.Index(pageContent, "<h2>")
        if h2Index == -1 {
            fmt.Println("No title element found")
            os.Exit(0)
        }

        h2Index  = 7

        h2EndIndex := strings.Index(pageContent, "</h2>")
        if h2EndIndex == -1 {
            fmt.Println("No closing tag for title found.")
            os.Exit(0)
        }

        pageTitle := []byte(pageContent[h2Index:h2EndIndex])

        fmt.Printf("Page title: %sn", pageTitle) // Prints the <a> tags in between the first h2  (<a class="white" href="/department/men/">SHOP MEN'S DEPARTMENT</a>)
}

  

Комментарии:

1. Поиск по строкам — очень хрупкий способ синтаксического анализа html. Попробуйте golang.org/x/net/html вместо этого.

2. не могли бы вы привести мне пример его использования в моей ситуации, пожалуйста? 🙂

3. В документах есть примеры.

4. Я не очень хорошо это понимаю