我现在正在学习Go自己,并坚持获取和解析HTML / XML。在Python中,我通常在进行网络抓取时编写以下代码:
from urllib.request import urlopen, Request
url = "http://stackoverflow.com/"
req = Request(url)
html = urlopen(req).read()
,然后我可以以string
或bytes
的形式获取原始HTML / XML并继续使用它。在Go中,我该如何应对?我希望得到的是原始HTML数据,它存储在string
或[]byte
中(虽然它可以很容易地转换,但我不介意哪些可以获得)。我考虑使用gokogiri包在Go中进行网页抓取(不确定我最终会使用它!),但看起来它需要原始HTML文本才能使用它...
那么我怎样才能获得这样的对象?
或者有更好的方法在Go中进行网络抓取工作吗?
感谢。
答案 0 :(得分:2)
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解析,请查看 the Go encoding/xml
package。