我有一个要解析的 html 表格。类似于以下
http://sprunge.us/IJUC中的内容
但是,我不确定解析信息的好方法。我见过几个 html 解析器,但它们似乎要求所有东西都有一个特殊的标签供你解析它,就像获取信息一样;但是,我的大部分信息都在<td></td>
有没有人建议解析这些信息?
我有一个要解析的 html 表格。类似于以下
http://sprunge.us/IJUC中的内容
但是,我不确定解析信息的好方法。我见过几个 html 解析器,但它们似乎要求所有东西都有一个特殊的标签供你解析它,就像获取信息一样;但是,我的大部分信息都在<td></td>
有没有人建议解析这些信息?
无耻插件:我的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.Find
为doc.Find
,因为 goquery 文档现在也是一个选择(v0.2/master 分支中的新内容)
您可能还对 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"
)
如果您的 HTML 格式正确,则可以使用内置的 XML 解析器: