使用scrapy爬虫的时候,记录一下如何分布式爬虫问题:

关键在于多台主机协作的关键:共享爬虫队列

主机:维护爬取队列
从机:负责数据抓取,数据处理,数据存储

队列如何维护:Redis队列
Redis 非关系型数据库,key-value形式存储,结构灵活。是内存中的数据结构存储系统,处理速度快,性能好
提供队列,集合等多种存储结构,方便队列维护

怎么去重
Redis集合:Redis提供集合数据结构,在Redis集合中存储每个Request的指纹,在向Request队列中加入Request前首先
验证这个Request的指纹是否已经加入集合中,如果已存在,则不添加到Request队列,如果不存在,则将Request添加到队列
并将指纹添加到集合。

(之前很多框架说利用bloom过滤器来实现去重,但是bloom过滤器有个假阳性的问题,即可能不存在集合的问题,bloom过滤器错误地判断为在集合中。)

怎么防止中断:
启动判断,在每台从机Scrapy启动时首先判断当前的Redis Request队列
是否为空,如果不为空,则从队列中取得下一个Request进行爬取。
如果为空,则重新开始爬取,第一台从机执行爬取向队列中添加Request

如何实现这样的架构
库:scrapy-redis:实现了维护爬取队列、去重、中断、redis接口
改写了Scrapy的调度器、队列等组件,利用它可以实现分布式架构

scrapy如何实现分布式爬虫的更多相关文章

  1. 基于Python,scrapy,redis的分布式爬虫实现框架

    原文  http://www.xgezhang.com/python_scrapy_redis_crawler.html 爬虫技术,无论是在学术领域,还是在工程领域,都扮演者非常重要的角色.相比于其他 ...

  2. scrapy——7 scrapy-redis分布式爬虫,用药助手实战,Boss直聘实战,阿布云代理设置

    scrapy——7 什么是scrapy-redis 怎么安装scrapy-redis scrapy-redis常用配置文件 scrapy-redis键名介绍 实战-利用scrapy-redis分布式爬 ...

  3. Scrapy+redis实现分布式爬虫

    概述 什么是分布式爬虫 需要搭建一个由n台电脑组成的机群,然后在每一台电脑中执行同一组程序,让其对同一网络资源进行联合且分布的数据爬取. 原生Scrapy无法实现分布式的原因 原生Scrapy中调度器 ...

  4. Scrapy 教程(八)-分布式爬虫

    scrapy 本身并不是一个分布式框架,而 Scrapy-redis 库使得分布式成为可能: Scrapy-redis 并没有重构框架,而是基于redis数据库重写了框架的某些组件. 分布式框架要解决 ...

  5. 基于scrapy框架的分布式爬虫

    分布式 概念:可以使用多台电脑组件一个分布式机群,让其执行同一组程序,对同一组网络资源进行联合爬取. 原生的scrapy是无法实现分布式 调度器无法被共享 管道无法被共享 基于 scrapy+redi ...

  6. Scrapy分布式爬虫,分布式队列和布隆过滤器,一分钟搞定?

    使用Scrapy开发一个分布式爬虫?你知道最快的方法是什么吗?一分钟真的能 开发好或者修改出 一个分布式爬虫吗? 话不多说,先让我们看看怎么实践,再详细聊聊细节~ 快速上手 Step 0: 首先安装 ...

  7. scrapy分布式爬虫scrapy_redis二篇

    =============================================================== Scrapy-Redis分布式爬虫框架 ================ ...

  8. scrapy分布式爬虫scrapy_redis一篇

    分布式爬虫原理 首先我们来看一下scrapy的单机架构:     可以看到,scrapy单机模式,通过一个scrapy引擎通过一个调度器,将Requests队列中的request请求发给下载器,进行页 ...

  9. Scrapy+Scrapy-redis+Scrapyd+Gerapy 分布式爬虫框架整合

    简介:给正在学习的小伙伴们分享一下自己的感悟,如有理解不正确的地方,望指出,感谢~ 首先介绍一下这个标题吧~ 1. Scrapy:是一个基于Twisted的异步IO框架,有了这个框架,我们就不需要等待 ...

随机推荐

  1. jQuery(四)(DOM一)

    jQuery把复杂的代码简单化. 如果我们通过AJAX获取到数据之后然后才能确定结构的话,这种情况就需要动态的处理节点了 一.DOM节点的创建:创建div节点元素的属性和创建div节点元素的样式doc ...

  2. SaberSama【css总结】

    为什么要转过来呢? 因为我觉到,同样是一个初学者,应该互相学习,交流. css:Cascading Style Sheets 层叠样式表 CSS引入方式: 1.内嵌: <p style=&quo ...

  3. 【转载】#437 - Access Interface Members through an Interface Variable

    Onece a class implementation a particular interface, you can interact with the members of the interf ...

  4. 【转载】#324 - A Generic Class Can Have More than One Type Parameter

    A generic class includes one or more type parameters that will be substituted with actual types when ...

  5. 二进制安装mysql5.6

    安装依赖包  yum install -y libaio yum install -y perl perl-devel       解压   mkdir /opt/mysql mv mysql-5.6 ...

  6. JS二维数组的写法以及注意事项

    最终数组:"line":[ { "Name":"WK_CT", "Sex":"CT", " ...

  7. POJ-1840 Eqs---二分

    题目链接: https://vjudge.net/problem/POJ-1840 题目大意: 给出一个5元3次方程,输入其5个系数,求它的解的个数 其中系数 ai∈[-50,50]  自变量xi∈[ ...

  8. Android(java)学习笔记71:Tab标签的使用

    1. 案例1---TabProject (1)首先是main.xml文件: <?xml version="1.0" encoding="utf-8"?&g ...

  9. poj 2112 Optimal Milking 奶牛

    题目链接:http://poj.org/problem?id=2112 题意:K个产奶机,C头奶牛,每个产奶机最多可供M头奶牛使用:并告诉了产奶机.奶牛之间的两两距离Dij(0<=i,j< ...

  10. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题

    银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ...