0

我现在正在自己学习 Go,并且一直在获取和解析 HTML/XML。在 Python 中,我通常在进行网页抓取时编写以下代码:

from urllib.request import urlopen, Request
url = "http://stackoverflow.com/"
req = Request(url)
html = urlopen(req).read()

,然后我可以得到原始 HTML/XML 的形式,或者string继续bytes使用它。在 Go 中,我该如何应对呢?我希望得到的是存储在stringor中的原始 HTML 数据[]byte(尽管它可以很容易地转换,但我根本不介意获取哪个)。我考虑使用gokogiri包在 Go 中进行网络抓取(不确定我是否最终会使用它!),但看起来它需要原始 HTML 文本才能使用它......

那么我怎样才能获得这样的对象呢?

或者有没有更好的方法在 Go 中进行网络抓取工作?

谢谢。

4

1 回答 1

2

Gohttp.Get示例

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    res, err := http.Get("http://www.google.com/robots.txt")
    if err != nil {
        log.Fatal(err)
    }
    robots, err := ioutil.ReadAll(res.Body)
    res.Body.Close()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s", robots)
}

将返回的内容http://www.google.com/robots.txt放入字符串变量robots中。

对于 XML 解析,请查看Goencoding/xml

于 2013-09-03T03:50:26.620 回答