解析したいhtmlのテーブルがあります。次の
http://sprunge.us/IJUCのようなもの
ですが、情報を解析する良い方法がわかりません。いくつかの html パーサーを見てきましたが、情報を取得するように解析するには、すべてに特別なタグが必要なようです。ただし、私の情報の大部分は<td></td>
この情報を解析するための提案はありますか?
解析したいhtmlのテーブルがあります。次の
http://sprunge.us/IJUCのようなもの
ですが、情報を解析する良い方法がわかりません。いくつかの html パーサーを見てきましたが、情報を取得するように解析するには、すべてに特別なタグが必要なようです。ただし、私の情報の大部分は<td></td>
この情報を解析するための提案はありますか?
恥知らずなプラグイン: 私の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
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"
)
HTMLが適切に形成されている場合は、内蔵XMLパーサーを使用できます。