8

我有一个要解析的 html 表格。类似于以下 http://sprunge.us/IJUC中的内容 但是,我不确定解析信息的好方法。我见过几个 html 解析器,但它们似乎要求所有东西都有一个特殊的标签供你解析它,就像获取信息一样;但是,我的大部分信息都在<td></td>

有没有人建议解析这些信息?

4

3 回答 3

16

无耻插件:我的goquery库。这是 Go 引入的 jQuery 语法(需要 Go 的实验性 html 包,请参阅库自述文件中的说明)。

所以你可以做这样的事情(假设你的 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.Finddoc.Find,因为 goquery 文档现在也是一个选择(v0.2/master 分支中的新内容)

于 2012-10-14T16:13:40.310 回答
2

您可能还对 Go 的实验性 HTML 解析器感兴趣: https ://code.google.com/p/go.net/html

根据 godoc 的包定义:

html 包实现了一个符合 HTML5 的标记器和解析器

我自己没有使用过它,但它看起来很简单:

通过使用 io.Reader 调用 Parse 来完成解析,该 io.Reader 将解析树的根(文档元素)作为 *Node 返回。调用者有责任确保 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)

它不是任何当前版本的一部分,但如果您从源代码安装或使用 golang-tip ubuntu apt repo,则可以使用它。

编辑:您还可以在此处使用以下实验性 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 回答