scrapy怎么提高性能?-写给自己看爬虫系列5

前言

需求:scrapy爬取网页速度十分缓慢,在目标网站良好的情况下三天才跑了80w条数据,参考其他爬虫的速度,一天抓取1000w条数据是没有问题的,scrapy性能需要优化。
思路:经过各种搜索,scrapy提高性能核心逻辑是提高并发数量,最简单的实现方式可以通过调整settings的‘CONCURRENT_REQUESTS’等参数或者使用分布式爬虫来提速。除此之外代码也要尽量少用循环。本人的简单优化主要通过以下方式

settings中设置CONCURRENT_REQUESTS

scrapy默认CONCURRENT_REQUESTS 为16,可以将CONCURRENT_REQUESTS 的数量增加。要注意download_delay会影响到并发的效果,大概是由于每个request的处理要在download_delay时间之后。具体见链接scrapy中CONCURRENT_REQUESTS与DOWNLOAD_DELAY的联系

DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'
spider中的循环优化

尽量减少循环的层数,另外参考python优化的原则,在循环中少用”.”的方法。

lowerlist = ['this', 'is', 'lowercase']
upper = str.upper
upperlist = []
append = upperlist.append
for word in lowerlist:
    append(upper(word))
    print(upperlist)
中间价的优化

当时写了一个简单的中间件用来记录请求失败的url,将中间件删掉后速度有所提升。

异步导出数据

具体没尝试过故此只放链接在次
[异步导出数据]http://www.cnblogs.com/ruoniao/p/6906344.html

参考文章
提升 Python 程序性能的 6 个技巧
Scrapy爬虫入门教程十三 Settings(设置)
【Scrapy爬虫系列2】性能调优

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