分布式爬虫 - scrapy-redis 分布式系统?
问题描述
现在可以从网上下载这些代码,怎么进行部署和运行代码从github上下载了关于分布式的代码,不知道怎么用,求各位大神指点下。。。下面是网址https://github.com/rolando/scrapy-redis环境已经按照上面的配置好了,但不知道如何实现分布式。分布式我是这样理解的,有一个redis服务器,从一个网页上获取url种子,并将url种子放到redis服务器了,然后将这些url种子分配给其他机器。中间存在调度方面的问题,以及服务器和机器间的通信。
谢谢。。。
问题解答
回答1:感觉这个不是一两句话可以描述清楚 的。
我之前参考的这篇博文,希望对你有帮助。
说说我个人的理解吧。
scrapy使用改良之后的python自带的collection.deque来存放待爬取的request,该怎么让两个以上的Spider共用这个deque呢?
待爬队列都不能共享,分布式就是无稽之谈。scrapy-redis提供了一个解决方法,把collection.deque换成redis数据库,多个爬虫从同一个redis服务器存放要爬取的request,这样就能让多个spider去同一个数据库里读取,这样分布式的主要问题就解决了.
注意:并不是换了redis来存放request,scrapy就能直接分布式了!
scrapy中跟待爬队列直接相关的就是调度器Scheduler。
参考scrapy的结构
它负责对新的request进行入列操作,取出下一个要爬取的request等操作。所以,换了redis之后,其他组件都要改动。
所以,我个人的理解就是,在多个机器上部署相同的爬虫,分布式部署redis,参考地址我的博客,比较简单。而这些工作,包括url去重,就是已经写好的scrapy-redis框架的功能。
参考地址在这里,你可以去下载example看看具体的实现。我最近也在搞这个scrapy-redis,等我部署好了在更新的这个答案。
你有新的进展可以分享出来交流。
回答2:@韦轩 您好,我看这段评论在15.10.11,请问您现在是否有结果了?能否推荐一些您的博客,谢谢您~可以联系我chenjian158978@gmail.com
相关文章:
1. javascript - webpack build出错后如何定位文件?2. java - springboot使用容器加载时,如何预先获取ClassLoader资源?3. html5 - 想要写一个H5页面,就微信打开来那种,然后几个输入框,把数据保存在我后台(java)的数据库里,实现思路是怎样的?4. boot2docker无法启动5. android - 百度地图加载大量marker点有没有比较好的解决方案6. 怎么在phpstudy中用phpexcel上传数据到MYSQL?7. java - AtomicInteger等原子类,是不是不用volatile修饰,自带volatile属性?8. vue.js - 为什么我的vue项目上传到github不能预览?9. css3 邊框漸層 及 ios背景模糊?10. 请在微信客户端打开链接怎么在PC端打开