Я довольно новичок в Go, и сейчас я немного борюсь с разбором некоторого html.Как получить содержимое элемента HTML
HTML, выглядит следующим образом:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>something</div>
<div id="publication">
<div>I want <span>this</span></div>
</div>
<div>
<div>not this</div>
</div>
</body>
</html>
И я хочу, чтобы это как строка:
<div>I want <span>this</span></div>
Я попытался html.NewTokenizer() (от golang.org/x/ net/html), но, похоже, не может вернуть все содержимое элемента из токена или узла. Я также попытался использовать глубину с этим, но он взял другие биты кода.
Я также был пойти с goquery, который кажется идеальным, код:
doc, err := goquery.NewDocument("{url}")
if err != nil {
log.Fatal(err)
}
doc.Find("#publication").Each(func(i int, s *goquery.Selection) {
fmt.Printf("Review %d: %s\n", i, s.Html())
})
Но s.Text() будет печатать только текст и s.Html(), кажется, не существует (?).
Я думаю, что разбор его как XML будет работать, за исключением фактического HTML очень глубоко и должно было бы быть структура для каждого родительского элемента ...
Любая помощь будет удивительно!
Что вы имеете в виду «Html) (» кажется, не существует? https://godoc.org/github.com/PuerkitoBio/goquery#Selection.Html - Он возвращает 2 значения, поэтому ваш код не может скомпилироваться. – JimB
ahhh ha! конечно, это выглядит лучше! - спасибо @JimB :) кажется, сейчас работает. Для записи изменили ее на: 'html, _: = s.Html()' 'fmt.Printf (" Обзор% d:% s \ n ", i, html)' –