自定义scrapy框架前戏

网友投稿 275 2022-09-08


自定义scrapy框架前戏

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 = " d = getPage(url)# d.addCallback(response)########################## 1.利用getPage创建socket# 2.将socket添加到事件循环中########################## def response(content):# print(content)## @defer.inlineCallbacks# def task():# url = " d = getPage(url)# d.addCallback(response)# yield d########################## 1.利用getPage创建socket# 2.将socket添加到事件循环中# 3.开始事件循环(无法自动结束)########################## def response(content):# print(content)# @defer.inlineCallbacks# def task():# url = " 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 = " 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 = " d = getPage(url.encode('utf-8'))# d.addCallback(response)# yield d# url = " 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 = Nonecount = 0def response(content): print(content) global count count += 1 if count == 3: # 请求都返回了 可以终止了 _close.callback(None)@defer.inlineCallbacksdef task(): """ 每个爬虫的开始:stats_request :return: """ url = " d1 = getPage(url.encode('utf-8')) d1.addCallback(response) url = " d2 = getPage(url.encode('utf-8')) d2.addCallback(response) # d1 d2 相当于开启2个爬虫任务 spider1 spider2 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()"""


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Boot Jar 包部署脚本的实例讲解
下一篇:Gerrit码仓之分配权限使用方法秘籍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~