scrapy是广度优先还是深度优先?-写给自己看爬虫系列4

前言

问题:有朋友问起这究竟scrapy是广度优先还是深度优先?
回答:
深度优先是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续追踪链接
广度优先,有人也叫宽度优先,是指将新下载网页发现的链接直接插入到待抓取URL队列的末尾,也就是指网络爬虫会先抓取起始页中的所有网页,然后在选择其中的一个连接网页,继续抓取在此网页中链接的所有网页
经过官方文档查询,因为scrapy使用的是后进先出队列,基本可以看成是深度优先(DFO)。如果需要设置广度优先(BFO),可以在settings中添加以下代码。另外当DEPTH_PRIORITY为正值时越靠广度优先,负值则越靠深度优先,默认值为0

settings中设置方法
DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'

参考文章
scrapy文档F&Q
Scrapy爬虫入门教程十三 Settings(设置)

    原文作者:wfishj
    原文地址: https://www.jianshu.com/p/ee6eaabdde0e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞