美文网首页
scrapy怎么提高性能?-写给自己看爬虫系列5

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

作者: wfishj | 来源:发表于2017-10-23 16:20 被阅读0次

    前言

    需求: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】性能调优

    相关文章

      网友评论

          本文标题:scrapy怎么提高性能?-写给自己看爬虫系列5

          本文链接:https://www.haomeiwen.com/subject/zujauxtx.html