用 go 编写爬虫

爬虫系统的要求

基本要求

  • 遍历链接,并获取网页
  • 网页解析,分析
  • 数据存储
  • 日志: 错误日志, 运行日志

分布式要求

  • 并行爬取: 效率高, 可以设定爬虫的数目
  • 任务管理: 任务队列, 出错了可以重新爬取
  • 代理: 考虑到爬取太多,可能会触发拦截,因此需要通过代理。
  • 策略: 可以灵活的设定策略, 爬取频率, 爬取数量, 使用不同的网管,使用不同的header

爬虫管理

  • 不同的网站,爬虫的规则是不一样的,因此爬虫可以自定义规则
  • 脚本: 有些网站可能需要登录认证。

循序渐进

v0.1 http请求

    baseUrl := "http://www.xxx.cn"
    req,_  := http.NewRequest("GET",baseUrl,nil)
    req.Header.Set("User-Agent", GetRandomUserAgent())
    client := http.DefaultClient
    res, e := client.Do(req)

    if e !=nil {
        fmt.Print(e)
        return
    }

    if res.StatusCode == 200 {
        body := res.Body
        defer body.Close()
        bodyByte,_ := ioutil.ReadAll(body)
        resStr := string(bodyByte)
        print(resStr)
    }