python如何搭建分布式爬虫呀

单机爬虫我已经会弄了但是分布式不会弄数据库是postgresql在我想象中,分布式爬虫是这样的:一个控制中心,控制所有爬虫,给他们分配任务,并得到爬虫返回的结果我的疑问是... 单机爬虫我已经会弄了
但是分布式不会弄
数据库是postgresql
在我想象中,分布式爬虫是这样的:
一个控制中心,控制所有爬虫,给他们分配任务,并得到爬虫返回的结果

我的疑问是,
问题1: 怎么实现,控制中心给每个爬虫比较平均的分配任务,用什么框架 什么算法 来实现?
问题2: 比如我有60个爬虫,他们怎么和控制中心通信 有什么框架 或者算法来实现吗
展开
 我来答
bdwisyou7d
2014-05-15 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1075万
展开全部
爬虫本质上不需要分布式。因为你要爬一个网站通常5-10个线程足够了,再多就是对网站压力测试了。

你只需要将任务分配到不同的机器上,然后各运行各自己的,结果合并一下就可以。 这个与nutch人map, reduse也没有什么差别。只是手工分,手工合并。当然也可以用脚本分,脚本合并,脚本远程启动。有一个远程控制模块,似乎叫rpy。很简单,很容易上手。可以远程控制一个模块。

数据库用postgresql不是很好。因为爬行结果放在关系型数据库里太吃力。特别是网页内容。通常是URL放在redis里。 内容放在文件系统里,你可以用hadoop+hdfs+thrift方案放在hadoop里。

如果使用了hadoop,就干脆模仿nutch的流程,把python脚本也交给hadoop去管理好了。
至于控制与通信这个都让hadoop来处理好了。

当然我个人觉着rpy方式更简单。 里面控制与通信都是现成的。10分钟就学会了。

还是回到原来的说法,大部分情况下,单机多线程跑爬虫足够用了。 不需要分布式。而且效率甚至比分布式更高。
更多追问追答
追问
我分布式主要是为了防止被封 ,因为我要很频繁的采集对方,
追答
哦。这个你用一个多IP代理就可以。或者是用家里的ASDSL,自动拨号重连后会重新分析一个IP给你。一天可以拥有2000多个IP。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式