标签:设置 爬虫 spider scrapy 停止 关闭 os
使用scrapy做爬虫程序时,有时候我们需要在爬虫满足一定条件时,将程序中断掉,从而不再向服务器发送已经没有意义的请求。
一:scrapy中提供的两种停止的方式:
1.在spider中停止爬虫:
在解析函数中调用内置函数
self.crawler.engine.close_spider(self, "当调用此方法时打印信息为:无有效信息,关闭spider")
设置条件,当满足一定的条件时执行此代码,则可以停止掉爬虫程序。但是经过我的反复试验,执行此代码之后爬虫程序并不会立即关闭,而是还会运行一段时间。
造成这种现象存在两种可能:
(1).调用关闭方法之后会将请求队列中的所有的url请求完之后才会完全停止。
(2).在执行此语法后,所在的解析函数不再产生新的url进入队列中,但是后续的解析函数还是会执行,一直到后面的所有的解析函数全部完成。
(经过几次试验,发现是第二种可能,但又不完全确定,如果有大神知道此处的逻辑,可以交流一下)
2.在pipeline中停止爬虫:
类似于上面的方式,只不过是在pipeline中执行
spider.crawler.engine.close_spider(spider, "无有效信息,关闭spider") # pepline 中使用此关闭方法
调用此语法之后同样有上面的没有立即停止的情况。
**二:使用os关闭程序
此方法与scrapy内置的关闭方法相似,只不过是使用os强制关闭进程。
首先导入os包
import os # 引入os包
然后跟前面的方法类似,设置条件,当满足条件时执行
os.exit()
这样就可以直接强制性的关闭进程。
标签:设置,爬虫,spider,scrapy,停止,关闭,os 来源: https://blog.csdn.net/amanloveformi/article/details/100142619
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。