#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. Я не очень хорошо это понимаю