8

解析したいhtmlのテーブルがあります。次の http://sprunge.us/IJUCのようなもの ですが、情報を解析する良い方法がわかりません。いくつかの html パーサーを見てきましたが、情報を取得するように解析するには、すべてに特別なタグが必要なようです。ただし、私の情報の大部分は<td></td>

この情報を解析するための提案はありますか?

4

3 に答える 3

16

恥知らずなプラグイン: 私のgoqueryライブラリ。これは、Go に導入された jQuery 構文です (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())
})

編集: goquery Document も Selection になったため、例を に変更doc.Root.Findします (v0.2/master ブランチの新機能)。doc.Find

于 2012-10-14T16:13:40.310 に答える
2

Go の実験的な HTML パーサーにも興味があるかもしれません: https://code.google.com/p/go.net/html

godoc によるパッケージ定義:

パッケージ html は、HTML5 準拠のトークナイザーおよびパーサーを実装します。

私はそれを自分で使用したことはありませんが、かなり簡単なようです:

解析は、解析ツリーのルート (ドキュメント要素) を *Node として返す io.Reader を使用して Parse を呼び出すことによって行われます。Reader が 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)

これは現在のリリースの一部ではありませんが、 source からインストールするか、golang-tip ubuntu apt リポジトリを使用する場合に使用できます。

編集: ここで実験的な Go パッケージの次のミラーを使用することもできます: https://github.com/kless/go-exp

go get github.com/kless/go-exp/html

import (
    "github.com/kless/go-exp/html"
)
于 2012-10-15T05:31:25.117 に答える
-1

HTMLが適切に形成されている場合は、内蔵XMLパーサーを使用できます。

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

于 2012-10-14T14:27:43.030 に答える