仅用学习参考,转载请注明出处

爬虫技术第一步

作为爬虫技术第一步,就是可以使用爬取下载图片作为示例。
那么爬取图片,我们肯定去爬取美女图片作为第一步操作示例呀。
那么下面一个最重要的工作。
什么是最重要的工作?

当然是去寻找美女图片呀

去斗鱼找美女图片

来点击这里访问颜值直播间:

这里跳过爬取页面,使用正则获取图片的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 协程并发下载斗鱼美女图片相关推荐

  1. python协程爬取斗鱼美女图片

    分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要的数据 ...

  2. python 协程并发

    # 协程并发 import gevent from gevent import monkey monkey.patch_all() from socket import * from time imp ...

  3. python协程 并发数量_Python-并发编程(协程)

    今天说说协程 一.引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两 ...

  4. Python 协程并发在Arduino中的运用(实验)

    目录 前言 实验设计 Mega2560端代码: Nano端代码: PC端代码: 补充: 前言 由于最近开始学习python的协程概念.结合自己已有的知识ÿ

  5. python 实现多任务协程下载斗鱼平台图片

    python 实现多任务协程下载斗鱼平台图片 import re import gevent from gevent import monkey, pool import time, random i ...

  6. python从网址爬图片协程_Python爬虫多任务协程爬取虎牙MM图片

    查看: 4420|回复: 241 [作品展示] Python爬虫多任务协程爬取虎牙MM图片 电梯直达 发表于 2019-4-17 21:35:47 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结 ...

  7. Kotlin学习——简单运用协程网络下载图片并更新到UI

    kotlin学习 协程Coroutines学习 简单小Demo:通过协程下载一张网络图片并显示出来 文章目录 kotlin学习 前言 一.如何开启一个协程? 二.如何在项目中使用协程 增加对 Kotl ...

  8. python协程实现一万并发_python进阶:服务端实现并发的八种方式

    [本文导读]文中有许多不妥之处,敬请批评指正!python编写的服务端,有八种实现并发的方式,如阻塞(对等)套接字实现并发.非阻塞套接字实现并发.epoll实现并发.多进程实现并发.多线程实现并发.进 ...

  9. python协程处理多个文件_python:多任务(线程、进程、协程)

    一.线程 1.创建线程 #创建线程 importthreading,timedeftask1():for i in range(5):print('task1 -- 任务:%s' %i) time.s ...

最新文章

  1. 上面两点下面一个三角形_这种胖胖的圆角三角形,在PPT里居然有这么多种画法!...
  2. AngularJS XMLHttpRequest
  3. IBM 2013策略发布:大数据和分析、云计算、企业移动、社交商务、智慧商务、智慧城市...
  4. 理解转置卷积与空洞卷积
  5. rgb sw 线主板接口在哪_火力升级 华硕B460重炮手PRO主板豪横上市_搜狐汽车
  6. lsd 特征点匹配代码_直线匹配-LSD算法
  7. 输出星期几的英文表示
  8. 新手怎样安装win10系统?win10系统安装教程解读
  9. 多省市出台关于区块链人才引进的计划
  10. 成百家之言,纳万端思辨,SDCC 2017·深圳站响号以待
  11. 使用机器学习来进行应用识别
  12. Postman couldn‘t upload file
  13. HTML5表单验证required提示的中文设置为英文
  14. Android 相机教程,Android 相机教程
  15. 北京,三看三核对,读懂社保对账单
  16. [Python]游戏编程--人工智能1
  17. 【模拟电子技术基础】本章讨论问题答案2
  18. 【pyqt】自制的图片裁剪分割器
  19. 南师大计算机专业导师,南京师范大学硕士生导师名单
  20. Android UsbDeviceManager 代码分析

热门文章

  1. vue3使用富文本编辑器wangEditor-v5(未使用composition api写法)
  2. 长沙尚学堂python培训机构
  3. Mac环境下反编译工具的使用
  4. 数据库无法修改问题解决
  5. mysql好友关系数据表设计_即时通讯数据库好友关系(一对多)应该怎样设计?...
  6. 触摸传感器PCB布局设计指南(二)
  7. 4.9-11 ebook 小问题,自摘记,书城首页开发完毕。
  8. 携程产品经理群面面经(含题目与答案)
  9. 计算机蓝屏代码0x000000ED,电脑开机蓝屏代码为0x000000ED怎么解决?
  10. 服务器IPMI(BMC)装机