Python 协程并发下载斗鱼美女图片
仅用学习参考,转载请注明出处
爬虫技术第一步
作为爬虫技术第一步,就是可以使用爬取下载图片作为示例。
那么爬取图片,我们肯定去爬取美女图片作为第一步操作示例呀。
那么下面一个最重要的工作。
什么是最重要的工作?
去斗鱼找美女图片
来点击这里访问颜值直播间:
这里跳过爬取页面,使用正则获取图片的url地址的步骤,直接找几张图片的url地址进行并发下载测试。
打开chrome浏览器的F12淡定点击图片,就可以看到里面的图片url地址啦。
复制一个图片地址,使用浏览器打开看看。
好啦,多操作几个图片的url地址,我准备如下:
- https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/04/1853869_20181204200344_small.jpg
- https://rpic.douyucdn.cn/live-cover/appCovers/2018/11/03/3933251_20181103191841_small.jpg
- https://rpic.douyucdn.cn/live-cover/roomCover/2018/11/06/572d6afd241adb4740ce0dfba086f09e_big.jpg
- https://rpic.douyucdn.cn/live-cover/appCovers/2018/11/19/3318573_20181119225716_small.jpg
- https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/01/4566947_20181201145747_small.jpg
- https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/11/2348814_20181211031627_small.jpg
好了,准备了那么多张图片的url地址啦。不要心急打开
使用urllib库下载第一张图片
首先在ipython3测试一下urllib库:
In [1]: import urllib.request In [3]: req = urllib.request.urlopen("https://www.baidu.com") In [4]: In [4]: req.read()
Out[4]: b'<html>\r\n<head>\r\n\t<script>\r\n\t\tlocation.replace(location.href.replace("https://","http://"));\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>\r\n</body>\r\n</html>'In [5]:
从上面已经可以看出爬取了浏览器打开百度的页面内容了。
下面就来写个下载图片的示例:
[root@server01 download_image]# cat download_image.py
#coding=utf-8
import urllib.request# 根据url地址打开图片内容
req = urllib.request.urlopen("https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/11/2348814_20181211031627_small.jpg")img_content = req.read() # 将图片内容进行读取with open("meinv.jpg","wb") as f:f.write(img_content)
执行下载如下:
[root@server01 download_image]# ls
download_image.py
[root@server01 download_image]#
[root@server01 download_image]# python3 download_image.py
[root@server01 download_image]#
[root@server01 download_image]# ls
download_image.py meinv.jpg
[root@server01 download_image]#
此时可以看到多了一个meinv.jpg
文件,放到桌面来查看一下。
好了,下载第一张图片的示例已经有了,那么下面大家应该都懂了。
那么是将其写成方法,然后同时并发执行下载。
使用gevent并发下载美女图片
[root@server01 download_image]# cat test.py
#coding=utf-8
import urllib.request
import gevent
from gevent import monkey
import timemonkey.patch_all() # 将程序中用到的耗时操作代码,换为gevent中自己实现的模块def download_image(image_name,image_url):# 根据url地址打开图片内容req = urllib.request.urlopen(image_url)img_content = req.read() # 将图片内容进行读取with open(image_name,"wb") as f:f.write(img_content)time.sleep(0.5)print("download %s",image_name)def main():gevent.joinall([gevent.spawn(download_image,"1.jpg","https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/11/2348814_20181211031627_small.jpg"),gevent.spawn(download_image,"2.jpg","https://rpic.douyucdn.cn/live-cover/appCovers/2018/11/03/3933251_20181103191841_small.jpg"),gevent.spawn(download_image,"3.jpg","https://rpic.douyucdn.cn/live-cover/roomCover/2018/11/06/572d6afd241adb4740ce0dfba086f09e_big.jpg"),gevent.spawn(download_image,"4.jpg","https://rpic.douyucdn.cn/live-cover/appCovers/2018/11/19/3318573_20181119225716_small.jpg"),gevent.spawn(download_image,"5.jpg","https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/01/4566947_20181201145747_small.jpg"),gevent.spawn(download_image,"6.jpg","https://rpic.douyucdn.cn/live-cover/appCovers/2018/12/11/2348814_20181211031627_small.jpg"),])if __name__ == "__main__":main()
[root@server01 download_image]#
执行如下:
[root@server01 download_image]# python3 test.py
download %s 4.jpg
download %s 6.jpg
download %s 2.jpg
download %s 1.jpg
download %s 5.jpg
download %s 3.jpg
[root@server01 download_image]# ls
1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg test.py
好了,这样就下载完图片了,放到桌面淡定看看。
淡定成功。
关注微信公众号,回复【资料】、Python、PHP、JAVA、web,则可获得Python、PHP、JAVA、前端等视频资料。
Python 协程并发下载斗鱼美女图片相关推荐
- python协程爬取斗鱼美女图片
分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要的数据 ...
- python 协程并发
# 协程并发 import gevent from gevent import monkey monkey.patch_all() from socket import * from time imp ...
- python协程 并发数量_Python-并发编程(协程)
今天说说协程 一.引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两 ...
- Python 协程并发在Arduino中的运用(实验)
目录 前言 实验设计 Mega2560端代码: Nano端代码: PC端代码: 补充: 前言 由于最近开始学习python的协程概念.结合自己已有的知识ÿ
- python 实现多任务协程下载斗鱼平台图片
python 实现多任务协程下载斗鱼平台图片 import re import gevent from gevent import monkey, pool import time, random i ...
- python从网址爬图片协程_Python爬虫多任务协程爬取虎牙MM图片
查看: 4420|回复: 241 [作品展示] Python爬虫多任务协程爬取虎牙MM图片 电梯直达 发表于 2019-4-17 21:35:47 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结 ...
- Kotlin学习——简单运用协程网络下载图片并更新到UI
kotlin学习 协程Coroutines学习 简单小Demo:通过协程下载一张网络图片并显示出来 文章目录 kotlin学习 前言 一.如何开启一个协程? 二.如何在项目中使用协程 增加对 Kotl ...
- python协程实现一万并发_python进阶:服务端实现并发的八种方式
[本文导读]文中有许多不妥之处,敬请批评指正!python编写的服务端,有八种实现并发的方式,如阻塞(对等)套接字实现并发.非阻塞套接字实现并发.epoll实现并发.多进程实现并发.多线程实现并发.进 ...
- python协程处理多个文件_python:多任务(线程、进程、协程)
一.线程 1.创建线程 #创建线程 importthreading,timedeftask1():for i in range(5):print('task1 -- 任务:%s' %i) time.s ...
最新文章
- 上面两点下面一个三角形_这种胖胖的圆角三角形,在PPT里居然有这么多种画法!...
- AngularJS XMLHttpRequest
- IBM 2013策略发布:大数据和分析、云计算、企业移动、社交商务、智慧商务、智慧城市...
- 理解转置卷积与空洞卷积
- rgb sw 线主板接口在哪_火力升级 华硕B460重炮手PRO主板豪横上市_搜狐汽车
- lsd 特征点匹配代码_直线匹配-LSD算法
- 输出星期几的英文表示
- 新手怎样安装win10系统?win10系统安装教程解读
- 多省市出台关于区块链人才引进的计划
- 成百家之言,纳万端思辨,SDCC 2017·深圳站响号以待
- 使用机器学习来进行应用识别
- Postman couldn‘t upload file
- HTML5表单验证required提示的中文设置为英文
- Android 相机教程,Android 相机教程
- 北京,三看三核对,读懂社保对账单
- [Python]游戏编程--人工智能1
- 【模拟电子技术基础】本章讨论问题答案2
- 【pyqt】自制的图片裁剪分割器
- 南师大计算机专业导师,南京师范大学硕士生导师名单
- Android UsbDeviceManager 代码分析