Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
爬取斗鱼直播颜值区直播封面图片代码实现:
工作流程:
1. 明确目标 Url2. 发送请求,获取应答数据包。 http.Get(url)3. 过滤 数据。提取有用信息。 4. 使用、分析得到数据信息。
```go
package mainimport ("fmt""strconv""net/http""io""regexp""os"
)func SaveImg(idx int, url string, page chan int) {path :="C:/itcast/img/" + strconv.Itoa(idx+1) + ".jpg"f, err := os.Create(path)if err != nil {fmt.Println(" http.Get err:", err)return}defer f.Close()resp, err := http.Get(url)if err != nil {fmt.Println(" http.Get err:", err)return}defer resp.Body.Close()buf := make([]byte, 4096)for {n, err2 := resp.Body.Read(buf)if n == 0 {break}if err2 != nil && err2 != io.EOF {err = err2return}f.Write(buf[:n])}page <- idx
}func main() {url := "https://www.douyu.com/g_yz"// 爬取 整个页面,将整个页面全部信息,保存在resultresult, err := HttpGet(url)if err != nil {fmt.Println("HttpGet err:", err)return}// 解析编译正则ret := regexp.MustCompile(`data-original="(?s:(.*?))"`)// 提取每一张图片的 urlalls := ret.FindAllStringSubmatch(result, -1)page := make(chan int)n := len(alls)for idx, imgURL := range alls {//fmt.Println("imgURL:", imgURL[1])go SaveImg(idx, imgURL[1], page)}for i:=0; i<n; i++ {fmt.Printf("下载第 %d 张图片完成\n", <- page)}}
// 获取一个网页所有的内容, result 返回
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, 4096)for {n, err2 := resp.Body.Read(buf)if n == 0 {break}if err2 != nil && err2 != io.EOF {err = err2return}result += string(buf[:n])}return
}
Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件相关推荐
- Golang实现并发版网络爬虫:豆瓣-电影名人数评分爬取并保存文件
爬取豆瓣电影信息: 双向爬取: 横向:以页为单位.纵向:以一个页面内的条目为单位. 横向: https://movie.douban.com/top250?start=0&filter= 1 ...
- Golang实现并发版网络爬虫:捧腹网段子爬取并保存文件
爬取捧腹网段子 url分页分析 https://www.pengfu.com/xiaohua_1.html 1 下一页+1 https://www.pengfu.com/xiaohua_2.html ...
- Python网络爬虫数据采集实战:同花顺动态网页爬取
前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...
- [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品
在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...
- Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...
- 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战
这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...
- Python网络爬虫实战1:百度新闻数据爬取
目录 一. 获取网页源代码 1. 四行代码获取(有时不灵) 2. 五行代码获取(常用方法) 二.分析网页源代码信息 方法1:F12方法 方法2:右击选择"查看网页源代码" 方法 ...
- Python实践 - 网络爬虫笔记 - 2、从网站上爬取公开信息
Python实践笔记 - 2.从网站上爬取公开信息 张板书的Python的实践笔记,包括笔记与DeBug的经历. 为了完成一个比较麻烦的实习任务,尝试着做了这样一个爬虫项目. 任务要求之一是要检索安徽 ...
- Python网络爬虫(四):selenium+chrome爬取美女图片
说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...
最新文章
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xm
- linux中shell变量$#,$@,$0,$1,$2的含义解释(转)
- UNIX环境高级编程——线程
- 对linux下loop设备的理解。
- 使用easyui框架的时候,js和css样式都加载了,但是图标加载不了
- 用visio制作机柜服务器,visio 绘制机柜接线图 实例教程
- 小程序啦啦外卖、码科跑腿、云贝外卖各种问题汇总解决对策
- lammps后处理:Python调用Ovito模块配置方法
- 数字图像处理第五章——图像复原与重建
- 我从Python新手到大师的百天之路(内附学习资源)
- 词干提取(stemming)和词形还原(lemmatization)比较
- 整活小能手!Windows系统滑动关机!一行脚本实现炫酷效果
- c语言速算24课程设计,C语言速算24数据结构课程设计.doc
- 这些带斑点的蛇实在太漂亮了,盘点18种带斑点的蛇
- 如何在柿饼派中用mqtt接收数据并进行解析
- CPU 基本工作原理和概念
- ldd 执行结果:不是动态可执行文件
- P330工作站装linux,联想ThinkStation P330工作站装win7系统及bios设置教程(支持usb)
- ETSI开源MANO发布首个版本
- Tuscany SCA软件架构设计理念分析鉴赏 (一)
热门文章
- 网络游戏装备是计算机数据,DNF装备搭配计算器_17173DNF专区_17173.com中国游戏门户站...
- KMP(b中有几个a)
- 嘚吧嘚java的发展历史
- php懒人,关于php懒人函数的详细介绍
- GeoHash代码实现--java
- 做好SEO必备的三步骤
- (目标检测)①数据集的建立(拍摄收集、数据集标注)
- 2020第十一届蓝桥杯国赛JAVA B组真题解析(带源码及解析)
- java 15k,广州-Java高级-15k-22k(月薪)
- wifi的sta + ap模式