# 分别使用urlopen和requests两个模块进行演示
# import requests # 需要安装的
# from urllib.request import urlopen
#
# url = 'http://www.baidu.com'
#
#
# res1 = urlopen(url) # urlopen,获取到页面请求对象
# res2 = requests.get(url)    # requests.get获取到请求对象
# print(res1)
# print(res2)
# print(res1.read().decode('utf-8'))  # 获取到页面源码,有缩进的
# print(res2.content.decode('utf-8')) # 获取到页面源码,无缩进的# 协程实现爬虫的例子# 这里只去处理请求过程中的IO等待,这样请求一个URL的时候,在URL还未返回的这个阶段就发生了IO事件,此时就会发生协程切换去获取另外一个URL,如此协程就充分巧妙利用了程序任务中的IO时间from gevent import monkey
monkey.patch_all()  # 打猴子补丁,使IO操作能被协程发现,从而使得协程能够协程切换工作
import gevent
from urllib.request import urlopendef get_url(url):response = urlopen(url)content = response.read().decode('utf-8')return len(content)if __name__ == '__main__':url_list = ['http://www.baidu.com', 'http://www.sogou.com', "http://www.cnblogs.com"]g_lst = []for url in url_list:g = gevent.spawn(get_url, url)g_lst.append(g)gevent.joinall(g_lst)   # 阻塞等待协程任务执行结束for g in g_lst:print(g.value)  # 协程对象.value能得到任务的返回值

转载于:https://www.cnblogs.com/whylinux/p/9866033.html

协程实现爬虫的例子主要优势在于充分利用IO时间去请求其他的url相关推荐

  1. 爬取QQ音乐中一首歌的相关信息及评论(破解反爬虫、多协程队列爬虫)

    刚写完这个实验作业,顺便来记录一下一些易错的地方: 目录 一.页面预览 二.其他信息 三.一些小细节 四.源码 项目框图: 一.页面预览 先从歌手页爬取到这首歌的相关信息,包括它歌曲.专辑的url.这 ...

  2. python 协程可以嵌套协程吗_Python实战异步爬虫(协程)+分布式爬虫(多进程)

    引言:我们在写爬虫时常会遇到这样的问题,当需要爬取多个URL时,写一个普通的基于requests库的爬虫程序爬取时间会很长.因为是顺序请求网页的,而网页请求和获得响应过程比较耗费时间,程序不得不等待获 ...

  3. python异步爬虫_Python实战异步爬虫(协程)+分布式爬虫(多进程)

    转自:https://blog.csdn.net/SL_World/article/details/86633611 在讲解之前,我们先来通过一幅图看清多进程和协程的爬虫之间的原理及其区别.(图片来源 ...

  4. 单线程、多线程和协程的爬虫性能对比

    作者:小小明 非常擅长解决各类复杂数据处理的逻辑,各类结构化与非结构化数据互转,字符串解析匹配等等. 至今已经帮助很多数据从业者解决工作中的实际问题,如果你在数据处理上遇到什么困难,欢迎与我交流. 豆 ...

  5. Python 爬虫:单线程、多线程和协程的爬虫性能对比

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料 ...

  6. Python爬虫:单线程、多线程和协程的爬虫性能对比!

    大家好,我是漆柒七7! 首先见面礼 Python学习大礼包 点击领取 然后今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线 ...

  7. Python爬虫:单线程、多线程和协程的爬虫性能对比

    今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线程和协程在网络爬虫中的性能. 具体要爬的网址是:https://movie ...

  8. Python爬虫纯干货:单线程、多线程和协程的爬虫性能对比

    今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线程和协程在网络爬虫中的性能. 具体要爬的网址是:https://movie ...

  9. Python爬虫:单线程、多线程和协程的爬虫性能对比!异步才是永远滴神!

    然后今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线程和协程在网络爬虫中的性能. 具体要爬的网址是:https://mov ...

最新文章

  1. harmonyos开发者邀请码,HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南
  2. java虚成员函数_Java常见知识点汇总(④)——虚函数、抽象函数、抽象类、接口...
  3. 每日程序C语言5-斐波那契兔子数
  4. 工业交换机厂家,工业交换机品牌前十大排名
  5. python创建长度为n的数组_在Python中建立N维数组并赋初值
  6. LINUX环境并发服务器的三种实现模型
  7. redis内存数据的持久化方式
  8. Java算法——回溯法
  9. PLSQL 导出、导入 表和数据
  10. php中eregi,php eregi
  11. 神经网络与深度学习-吴岸城
  12. 2018年最新北京落户名单统计分析
  13. 金仓数据库 KingbaseES Sys_repack 解决金仓数据库 KingbaseES 表膨胀的问题
  14. 《Oracle PL/SQL程序设计(第5版)》一一2.4 执行必要的PL/SQL任务
  15. java采用降低图片分辨率大小来压缩图片大小
  16. 【以太坊】雷电网络的101网络原理概述
  17. 通过父级id 递归找到所有子类
  18. 无人机路径规划1:orbslam2+VIO
  19. 在.gitmodules中找不到路径和丢失的.gitmodules文件的子模块映射
  20. Nagios短信分组报警

热门文章

  1. Mysql在离线安装时提示:error: Found option without preceding group in config file
  2. Java中集合中根据对象的某个属性去重
  3. Python实现将图片转字符画
  4. 【编程4】插入排序+快速排序+LeetCode.148(排序链表)
  5. Microsoft Jet 数据库引擎找不到输入表或查询. 确定它是否存在如何解决
  6. graphpad的折线图x轴自定义_Graphpad Prism绘制折线图
  7. 3说明书_电子产品说明书应该怎么翻译?知行君认为需要注意这3点
  8. 案例 | 撇开虚荣指标,如何策划一场成功的拉新活动?
  9. 数据驱动才是零售企业转型的核心!
  10. 《码出高效:Java 开发手册》正式发布,83行代码计划启动