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"
)

Если ваш HTML хорошо сформирован, вы можете использовать встроенный синтаксический анализатор XML:

http://golang.org/pkg/encoding/xml/