@netz-sanya

Как распарсить html код внутри title?

Дан html код, доступный по ссылке:
<div name="lesson" class="lesson" title="
<p class=tooltip_name><b>1-1</b></p>
<p class=tooltip_professor>Преп2</p>
<hr />
<p class=tooltip_aud>Практическое занятие</p>
" style="background-color: #D5F6FF;">	
<p>Физ культура</p>
<p class="lesson_aud">ЗАЛ1</p>
</div>

С помощью кода и библиотеки Goquery:
teacher, err := td.Find(".lesson").Attr("title") // получает значение title
if err != true {
       log.Fatal(err)
}
teacher= ClearSpace(teacher) // удаляет и обрезает лишние пробелы
fmt.Println(teacher + "\n")

Переменная teacher получает:
<p class=tooltip_name><b>1-1</b></p> <p class=tooltip_professor>Преп2</p> <hr /> <p class=tooltip_aud>Практическое занятие</p>

Как получить значения абзацев?
  • Вопрос задан
  • 478 просмотров
Решения вопроса 1
Нужно просто ещё раз распарить html

package main

import (
	"bytes"
	"fmt"
	"log"

	"github.com/PuerkitoBio/goquery"
)

func main() {
	rawHtml := bytes.NewBuffer([]byte(`
<div name="lesson" class="lesson" title="
<p class=tooltip_name><b>1-1</b></p>
<p class=tooltip_professor>Преп2</p>
<hr />
<p class=tooltip_aud>Практическое занятие</p>
" style="background-color: #D5F6FF;">	
<p>Физ культура</p>
<p class="lesson_aud">ЗАЛ1</p>
</div>
	`))
	doc, err := goquery.NewDocumentFromReader(rawHtml)
	if err != nil {
		log.Fatal(err)
	}

	title, ok := doc.Find(".lesson").Attr("title") // получаем значение title
	if !ok {
		log.Fatal("Cannot find the node with the class 'lesson'")
	}

	// Парсим то, что лежит в title
	docFromTitle, err := goquery.NewDocumentFromReader(bytes.NewBuffer([]byte(title)))
	if err != nil {
		log.Fatal(err)
	}

	// Получаем элемент с именем преподавателя
	teacher := docFromTitle.Find(".tooltip_professor").Text()

	fmt.Println(teacher)
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы