Scrapy源码剖析前戏之Twisted使用
from twisted.internet import reactor # 事件循环(终止条件,所有的socket都已经移除) from twisted.web.client import getPage # socket对象(如果下载完成,自动从时间循环中移除...) from twisted.internet import defer # defer.Deferred 特殊的socket对象 (不会发请求,手动移除)# 1.利用getPage创建socket # 2.将socket添加到事件循环中 # 3.开始事件循环 (内部发送请求,并接受响应;当所有的socekt请求完成后,终止事件循环)######################### # 1. 利用getPage创建socket # ######################### # 1.利用getPage创建socket # def response(content): # print(content) # # # def task(): # url = "http://www.baidu.com" # d = getPage(url) # d.addCallback(response)######################### # 1.利用getPage创建socket # 2.将socket添加到事件循环中 ######################### # def response(content): # print(content) # # @defer.inlineCallbacks # def task(): # url = "http://www.baidu.com" # d = getPage(url) # d.addCallback(response) # yield d######################### # 1.利用getPage创建socket # 2.将socket添加到事件循环中 # 3.开始事件循环(无法自动结束) ######################### # def response(content): # print(content)# @defer.inlineCallbacks # def task(): # url = "http://www.baidu.com" # d = getPage(url.encode('utf-8')) # d.addCallback(response) # yield d # # def done(*args,**kwargs): # reactor.stop() # # task() # reactor.run() ######################### # 1.利用getPage创建socket # 2.将socket添加到事件循环中 # 3.开始事件循环(自动结束) ######################### # def response(content): # print(content) # @defer.inlineCallbacks # def task(): # url = "http://www.baidu.com" # d = getPage(url.encode('utf-8')) # d.addCallback(response) # yield d # # def done(*args,**kwargs): # reactor.stop() # # d = task() # dd = defer.DeferredList([d,]) # dd.addBoth(done) # # reactor.run()######################### # 1.利用getPage创建socket # 2.将socket添加到事件循环中 # 3.开始事件循环(自动结束) ######################### # def response(content): # print(content) # # @defer.inlineCallbacks # def task(): # url = "http://www.baidu.com" # d = getPage(url.encode('utf-8')) # d.addCallback(response) # yield d # url = "http://www.baidu.com" # d = getPage(url.encode('utf-8')) # d.addCallback(response) # yield d # # def done(*args,**kwargs): # reactor.stop() # # li = [] # for i in range(10): # d = task() # li.append(d) # dd = defer.DeferredList(li) # dd.addBoth(done)# reactor.run()######################### # 1.利用getPage创建socket # 2.将socket添加到事件循环中 # 3.开始事件循环(自动结束) ######################### """ _close = None count = 0 def response(content):print(content)global countcount += 1if count == 3:_close.callback(None)@defer.inlineCallbacks def task():"""每个爬虫的开始:stats_request:return:"""url = "http://www.baidu.com"d1 = getPage(url.encode('utf-8'))d1.addCallback(response)url = "http://www.cnblogs.com"d2 = getPage(url.encode('utf-8'))d2.addCallback(response)url = "http://www.bing.com"d3 = getPage(url.encode('utf-8'))d3.addCallback(response)global _close_close = defer.Deferred()yield _closedef done(*args,**kwargs):reactor.stop()# 每一个爬虫 spider1 = task() spderd2 = task() dd = defer.DeferredList([spider1,spderd2]) dd.addBoth(done)reactor.run() """
前戏.py
转载于:https://www.cnblogs.com/jintian/p/11439992.html
Scrapy源码剖析前戏之Twisted使用相关推荐
- cmd怎么运行http_Scrapy源码剖析(二)Scrapy是如何运行起来的?
阅读本文大约需要 15 分钟.本文章代码较多,如果手机端阅读体验不好,建议先收藏后在 PC 端阅读. 在上篇文章:Scrapy源码剖析(一)架构概览,我们主要从整体上了解了 Scrapy 的架构和数据 ...
- python源码剖析 豆瓣_在数据分析师的分析中豆瓣的书那些值得读
最近总是有人问我有什么书好推荐看看,特烦.但是看到那么多人问,看来挺多人有这个需求,便想了一下,如何通过数据分析找到值得看的书.通过爬取某个标签例如产品,运营获取对应已经打了标签的书,获取书对应的评分 ...
- Mongoose源码剖析:Introduction and Installation
引言 要剖析Mongoose的源码,首先你得知道它的一些基本情况和特性.并去使用它.本文就是介绍Mongoose是个什么东西?及如何安装和使用?这里假设你知道什么web服务器软件.web服务器使用什么 ...
- 【Java集合源码剖析】TreeMap源码剖析
2019独角兽企业重金招聘Python工程师标准>>> 前言 本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的 ...
- LinkedList源码剖析
1. LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用. LinkedList同样是非线 ...
- LinkedHashMap源码剖析
1. LinkedHashMap简介 LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节 ...
- Swoft 源码剖析 - Swoft 中的注解机制
作者:bromine 链接:https://www.jianshu.com/p/ef7... 來源:简书 著作权归作者所有,本文已获得作者授权转载,并对原文进行了重新的排版. Swoft Github ...
- 《STL源码剖析》学习--6章--_rotate算法分析
最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. <STL源码剖析>学习--6章--random access ite ...
- 《STL源码剖析》学习--6章--power算法分析
最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. 6章--power算法分析 书本中的算法如下所示: template <clas ...
最新文章
- LeetCode(7.整数反转)JAVA
- 多delegate使用
- winform在表格中输入一个完整的时间字段_B端交互组件之表格篇
- Linux(Centos7)下使用RPM方式安装MySQL5.7
- 【Elasticsearch】父子聚合 can‘t specify parent if no parent field has been configured
- 【luogu】P1772物流运输(最短路+DP)
- 大数据知识可以怎么学习
- 6N137中文说明书 光耦资料 6N137资料
- Java算法-堆排序
- 网络工程师考试常用计算公式汇总
- 微信公众号python_微信公共平台框架-python(支持多账号)
- 使用AppleScript批量删除Mac中的信息
- vue error The code generator has deoptimised the styling exceeds the max of 100KB
- 阿里巴巴java开发手册一方库、二方库、三方库都是什么东东
- 如何检测android手机是否支持3g网络或者4g网络 源码,iOS中怎么判断当前网络环境是2G/3G/4G/5G/WiFi...
- 手把手教你玩转KVM虚拟机--KVM管理虚拟机
- java find bug,java-Findbugs contrib:方法从没有历史记录的catch块中抛出替代异常
- python实现千牛客服自动回复语_千牛旺旺客服设置自动回复的技巧有哪些?总结性文章来啦...
- asd激光粒度仪测试原理是什么解答
- CDN降价之后又一大招 阿里云PCDN正式开放申请
热门文章
- 3A简介(持续更新)
- WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)
- (筆記) 否定疑問句的回答 (Japanese)
- 手机拍照技巧(一:校园拍摄)
- SSS1700 QFN36单芯片设计一款USB Typec耳机|支持线控和欧美规自动切换USB耳机方案
- Matlab最实用画图命令整理(包括Print输出SCI论文高清大图!)
- linux的系统监视器图片_用Nvidia Jetson Nano 2GB和Python构建一个价值60美元的人脸识别系统 - 人工智能遇见磐创...
- Android使用Fragment打造万能页面切换框架(三)
- 博达网站服务器地址怎么查,路由器博达路由器配置经典教程
- Ubuntu修改桌面分辨率