pyspider最佳实践

pyspider是好东西,非常稳定,很久很久以前架了一个,心冷了一段时间,但人家尽忠职守地持续运行,一直在抓取东西。

结合chrome,抓取代码简直不要太好写,没想到,最头大的,还是它的调度。明明感觉没问题的,就是不运行。在这个上面花的时间,比页面解析的要多。所以,把近期的学习心得记录下来:

第一、控制台的含义。rate/burst控制并发和速度基本不用管。progress现实近期调用次数可以参考一下。我用得最多的是左上角的Recent Active Tasks,可以查看究竟运行了几个爬虫任务(对应self.crawl)

image

第二、几个重要控制设置。@every(minutes=24*60)是指的运行间隔。@config(age=300)指的页面周期(单位秒),周期范围内将不执行抓取。

第三、我的需求,是对一些固定页面(已经存在库中了)进行定时检查,解析出链接,已经入库的老链接忽略,新链接入库。所以,不采用默认的start页面进入总页面,解析出一组分页面链接,再分别调用分页面的方式。而直接在start中启动所有分页面,分页面设置有效期,定期自动重新获取。而start每天重入一次,保证链接活动即可。如下:

image

补充一下,如果设定了重新刷新的间隔,那么——这个间隔很难修改,哪怕把服务器上pyspider关了,重开,还是原来的间隔。最后没办法,只能新建一个项目,把代码复制过去才ok!

原文地址:https://www.cnblogs.com/jetz/p/11626473.html