Scrapy之twisted模块
scrapy框架(内部去下载内容就是使用twisted异步非租塞模块) 1.依赖twisted 内部基于事件循环的机制实现爬虫的并发 非租塞:不等待 发起连接请求,不等待连接再去连接下一个,发送一个之后马上发送下一个 异步:回调 体现就是通知 只要发送成功回来就自动通知 事件循环:循环socket任务,检测socket状态 是否连接成功 是否返回结果 白话:单线程同时可以向多个目标发起http请求 官方:基于事件循环的异步非租塞模块 1 from twisted.web.client import getPage, defer 2 from twisted.internet import reactor 3 4 5 # 第一部分 代理开始接收任务 6 def callback(contents): 7 print(contents) 8 9 deferred_list = [] # 任务列表 10 url_list = ['http://www.bing.com', 'https://segmentfault.com/', 'https://stackoverflow.com/'] 11 for url in url_list: 12 deferred = getPage(bytes(url, encoding='utf8'))