codecamp

pyspider 关于项目

关于项目

在大多数情况下,项目是您为一个网站编写的一个脚本。

  • 项目是独立的,但您可以将另一个项目作为模块导入 from projects import other_project
  • 一期工程有5个状态:TODO,STOP,CHECKING,DEBUG和RUNNINGTODO - 创建一个脚本来编写STOP- 您可以将项目标记为STOP您希望它停止(= =)。CHECKING- 修改正在运行的项目时,为防止不完整修改,项目状态将CHECKING自动设置。DEBUG/ RUNNING- 这两种状态对蜘蛛没有区别。但是将它标记为DEBUG第一次运行然后将其更改RUNNING为检查后是很好的。
  • 抓取速度被控制,rate并burst用令牌桶算法。rate - 一秒钟内有多少请求burst- 考虑到这种情况,rate/burst = 0.1/3这意味着蜘蛛每10秒抓一页。所有任务都已完成,项目每分钟检查最后更新的项目。假设找到3个新项目,pyspider将“爆发”并抓取3个任务而不等待3 * 10秒。但是,第四项任务需要等待10秒。
  • 要删除项目,请设置group为delete和状态STOP,等待24小时。

on_finished 打回来

您可以on_finished在项目中覆盖方法,当task_queue变为0时将触发该方法。

示例1:当您启动项目以爬网包含100个页面的网站时,on_finished将在成功爬网100个页面或重试后失败时触发回调。

示例2:具有auto_recrawl任务的项目将永远不会触发on_finished回调,因为当其中存在auto_recrawl任务时,时间队列将永远不会变为0。

示例3:具有@every修饰方法的项目将在on_finished每次新提交的任务完成时触发回调。



pyspider 关于任务
pyspider 脚本环境
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }