Go Parse HTML таблица
У меня есть таблица в html, которую я хотел бы разобрать. Что-то вроде следующего
http://sprunge.us/IJUC
Тем не менее, я не уверен в хорошем способе анализа информации. Я видел пару синтаксических анализаторов html, но они, похоже, требуют, чтобы все имело специальный тег для вас, чтобы проанализировать его, как информацию, чтобы захватить; однако большая часть моей информации находится в <td></td>
есть ли у кого-нибудь предложение по разбору этой информации?
3 ответов
промоушен: мой goquery библиотека. Это синтаксис jQuery, доведенный до Go (требуется Go экспериментальный html-пакет, см. инструкции в README библиотеки).
таким образом, вы можете делать такие вещи (предполагая, что ваш HTML-документ загружен в doc, a *goquery.Document
):
doc.Find("td").Each(func (i int, s *goquery.Selection) {
fmt.Printf("Content of cell %d: %s\n", i, s.Text())
})
Изменить: Изменить doc.Root.Find
to doc.Find
в Примере, так как документ goquery теперь также является выбором (новый в v0.2 / master branch)
вас также может заинтересовать экспериментальный HTML-парсер Go: https://code.google.com/p/go.net/html
определение пакета согласно godoc:
пакет html реализует HTML5-совместимый токенизатор и парсер
Я не использовал его сам, но это кажется довольно прямо вперед:
парсинг осуществляется вызовом метода Parse с Ио.Читатель, который возвращает корень дерева разбора (элемент документа)как узел*. Это ответственность вызывающего абонента за обеспечение того, чтобы читатель предоставлял UTF-8 закодированных в формате HTML.
go get code.google.com/p/go.net/html
import "code.google.com/p/go.net/html"
doc, err := html.Parse(r)
Он не является частью текущей версии, но может быть использован, если вы установить из Источник, или используйте РЕПО Ubuntu apt golang-tip.
редактировать: вы также можете использовать следующее зеркало экспериментальных пакетов Go здесь:https://github.com/kless/go-exp
go get github.com/kless/go-exp/html
import (
"github.com/kless/go-exp/html"
)