现在可以从网上下载这些代码,怎么进行部署和运行代码
从github上下载了关于分布式的代码,不知道怎么用,求各位大神指点下。。。
下面是网址
https://github.com/rolando/scrapy-redis
环境已经按照上面的配置好了,但不知道如何实现分布式。
分布式我是这样理解的,有一个redis服务器,从一个网页上获取url种子,并将url种子放到redis服务器了,然后将这些url种子分配给其他机器。中间存在调度方面的问题,以及服务器和机器间的通信。
谢谢。。。
现在可以从网上下载这些代码,怎么进行部署和运行代码
从github上下载了关于分布式的代码,不知道怎么用,求各位大神指点下。。。
下面是网址
https://github.com/rolando/scrapy-redis
环境已经按照上面的配置好了,但不知道如何实现分布式。
分布式我是这样理解的,有一个redis服务器,从一个网页上获取url种子,并将url种子放到redis服务器了,然后将这些url种子分配给其他机器。中间存在调度方面的问题,以及服务器和机器间的通信。
谢谢。。。
2 回答3.1k 阅读
1 回答1.9k 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1 回答966 阅读
782 阅读
感觉这个不是一两句话可以描述清楚 的。
我之前参考的这篇博文,希望对你有帮助。
说说我个人的理解吧。
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
,等我部署好了在更新的这个答案。你有新的进展可以分享出来交流。