简单爬虫

//爬取网页内容
func httpGet(url string) (result string, err error) {resp, err1 := http.Get(url)if err1 != nil {err = err1return}defer resp.Body.Close()//读取网页的内容buf := make([]byte, 1024*4)for {n, err := resp.Body.Read(buf)if n == 0 { //读取结束,或者出问题fmt.Println("resp.body err: ", err)break}result += string(buf[:n])}return
}func DoWork(start, end int) {fmt.Printf("正在爬取 %d 到 %d的页面\n", start, end)//明确目标for i := start; i <= end; i++ {url := "https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=" + strconv.Itoa((i-1)*50)fmt.Println(url)//爬取页面result, err := httpGet(url)if err != nil {fmt.Println("http err: ", err)//跳出continue}fmt.Println("内容是: ", result)}
}func main() {//https://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&ie=utf-8&pn=200var start, end intfmt.Println("请输入起始页( >= 1): ")fmt.Scan(&start)fmt.Printf("请输入终止页(>=起始页): ")fmt.Scan(&end)DoWork(start, end)
}

golang中的爬虫相关推荐

  1. Golang实现简单爬虫框架(4)——队列实现并发任务调度

    前言 在上一篇文章<Golang实现简单爬虫框架(3)--简单并发版>中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Wor ...

  2. golang中http协议实现

    golang中http协议实现 写了一个爬虫,发现出现了socket泄露的情况.百度了一下发现是缺少了Response.Body.Close(),所以导致连接 没有被正常的关闭.也没有被gc回收.下面 ...

  3. Golang实现简单爬虫框架(5)——项目重构与数据存储

    前言 在上一篇文章<Golang实现简单爬虫框架(4)--队列实现并发任务调度>中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一.然后添加数据存储模块. 注 ...

  4. Golang中Buffer高效拼接字符串以及自定义线程安全Buffer

    本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. Go中可以使用"+ ...

  5. 如何在golang中关闭bufio.reader_Golang 并发模型系列:1. 轻松入门流水线模型

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文 ...

  6. go语言的iota是什么意思_关于Golang中的iota

    快速一览 iota是Golang中提供的一个简化常量和枚举编程的标识符,合理的使用这个标识符可以让代码变得更简洁,省去大量的不必要的代码. 比如下面的这个常量定义 const ( a = 1 b = ...

  7. Golang中的panic和recover(捕获异常)

    Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...

  8. golang 中string和int类型相互转换

    总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: test_int, err := strconv.Atoi(test_string) if err != ni ...

  9. golang中并发sync和channel

    golang中并发sync和channel chenbaoke · 2014-12-08 13:00:01 · 19151 次点击 · 预计阅读时间 5 分钟 · 不到1分钟之前 开始浏览 这是一个创 ...

最新文章

  1. postfilter中文什么意思_Filterpost请求中文字符编码的过滤器 --学习笔记
  2. Android之ndk之gdb调试
  3. 可持久化平衡树(FHQ Treap)
  4. 我的Go+语言初体验——(7)Go+ 分数型有理数数据类型
  5. java nodefilter类,Java Servlet Filter过滤器概述
  6. 【Elasticsearch】Elasticsearch 缓存深度剖析:一次提高一种缓存的查询速度
  7. 语义分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic
  8. 计算机固态硬盘安装,电脑怎么安装固态硬盘?电脑安装M.2和SATA SSD硬盘教程图解...
  9. 如何解决PDF图片字体未嵌入的问题
  10. 1-2 图片批量裁剪
  11. Flask Marshmallow基本使用
  12. 前端图片合成技术_Javascript 前端合成图片
  13. 位运算bitwise_and和bitwise_not函数
  14. 高德地图定位获取当前地址城市街道等详细信息(全部代码)
  15. Netron 可视化
  16. pc端-轮播图 和 二级菜单
  17. 年轻人买出来的智能清洁“三巨头”:科沃斯“稳健”,石头“敏锐”、追觅“灵动”
  18. win7计算机服务启动不了,win7 32位旗舰版提示依赖服务无法启动怎么修复
  19. 如何使用Spring Boot促进java开发?高级java架构师为您详解!
  20. 计算机技术中本聪,中本聪Satoshi Nakamoto

热门文章

  1. 【错误记录】NDK 动态库报错 ( dlopen failed: file offset for the library /lib/arm64/libwebp.so“ >= file size:0)
  2. 使用expvar进行监控
  3. 网络流24题-魔术球问题
  4. [LeetCode] 67. Add Binary Java
  5. mybatis-config.xml整理
  6. 慢吞吞的pip切换源
  7. 将一个Excel文件分隔成多个
  8. (转)CentOS 5.5 64bit 编译安装Adobe FlashMediaServer 3.5
  9. 获取一个对象的属性/属性值,以及动态给属性赋值
  10. 基于jQuery的AJAX和JSON实现纯html数据模板