手摸手教你用go写爬虫之一(准备知识:网页抓取)

wujiangwei · · 1701 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

> 本文介绍网页抓取相关的知识 ### 1. 获取网页内容 > 我们使用 `http.Get()` 方法来获取网页的内容,它相当于`PHP`中的`file_get_contents` ```go url := "https://hz.zu.anjuke.com/" response,err := http.Get(url) ``` >可以看到,该方法返回了一个`response`相应信息的指针以及错误信息 该响应信息中我们要获取的是请求体的内容,可以使用: ```go bytes, err := ioutil.ReadAll(response.Body) defer response.Body.Close() ``` > 注意:`response.Body` 必须手动调用 `Close`方法,否则该网络响应会一直占用内存 原官方文档如下: ``` // The http Client and Transport guarantee that Body is always // non-nil, even on responses without a body or responses with // a zero-length body. It is the caller's responsibility to // close Body. ``` > 这里我们就拿到了完整的字节流请求的结果。 ### 2. 完整实例 ```go package main import ( "fmt" "io/ioutil" "net/http" ) /** 根据提供的url 获取返回信息内容 */ func GetContents(url string) (string ,error) { resp,err := http.Get(url) if err != nil { return "",err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return "", fmt.Errorf("get content failed status code is %d ",resp.StatusCode) } bytes,err := ioutil.ReadAll(resp.Body) if err != nil { return "" , nil } return string(bytes),nil } func main() { url := "https://hz.zu.anjuke.com/" contents,err := GetContents(url) if err != nil { fmt.Println(err) return } fmt.Printf(contents) } ``` > 源代码地址:[github](https://github.com/wujiangweiphp/house_spider/blob/master/getContent/getContent.go)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1701 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传