codecamp

Scrapy是以广度优先还是深度优先的顺序爬行?

默认情况下,Scrapy使用 LIFO 用于存储挂起请求的队列,这基本上意味着它会爬入 DFO order .这种订单在大多数情况下更方便。

如果你真的想爬进去 BFO order ,您可以通过设置以下设置来完成此操作:

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'

当挂起的请求低于配置的值时 ​CONCURRENT_REQUESTS​ , ​CONCURRENT_REQUESTS_PER_DOMAIN​ 或 ​CONCURRENT_REQUESTS_PER_IP​ ,这些请求同时发送。因此,前几个爬行请求很少遵循所需的顺序。将这些设置降低到 1 强制执行所需的顺序,但它会显著降低整体爬行速度。

Scrapy能与HTTP代理一起工作吗?
响应状态代码999是什么意思?
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

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; }