python如何搭建分布式爬虫呀
单机爬虫我已经会弄了但是分布式不会弄数据库是postgresql在我想象中,分布式爬虫是这样的:一个控制中心,控制所有爬虫,给他们分配任务,并得到爬虫返回的结果我的疑问是...
单机爬虫我已经会弄了
但是分布式不会弄
数据库是postgresql
在我想象中,分布式爬虫是这样的:
一个控制中心,控制所有爬虫,给他们分配任务,并得到爬虫返回的结果
我的疑问是,
问题1: 怎么实现,控制中心给每个爬虫比较平均的分配任务,用什么框架 什么算法 来实现?
问题2: 比如我有60个爬虫,他们怎么和控制中心通信 有什么框架 或者算法来实现吗 展开
但是分布式不会弄
数据库是postgresql
在我想象中,分布式爬虫是这样的:
一个控制中心,控制所有爬虫,给他们分配任务,并得到爬虫返回的结果
我的疑问是,
问题1: 怎么实现,控制中心给每个爬虫比较平均的分配任务,用什么框架 什么算法 来实现?
问题2: 比如我有60个爬虫,他们怎么和控制中心通信 有什么框架 或者算法来实现吗 展开
展开全部
爬虫本质上不需要分布式。因为你要爬一个网站通常5-10个线程足够了,再多就是对网站压力测试了。
你只需要将任务分配到不同的机器上,然后各运行各自己的,结果合并一下就可以。 这个与nutch人map, reduse也没有什么差别。只是手工分,手工合并。当然也可以用脚本分,脚本合并,脚本远程启动。有一个远程控制模块,似乎叫rpy。很简单,很容易上手。可以远程控制一个模块。
数据库用postgresql不是很好。因为爬行结果放在关系型数据库里太吃力。特别是网页内容。通常是URL放在redis里。 内容放在文件系统里,你可以用hadoop+hdfs+thrift方案放在hadoop里。
如果使用了hadoop,就干脆模仿nutch的流程,把python脚本也交给hadoop去管理好了。
至于控制与通信这个都让hadoop来处理好了。
当然我个人觉着rpy方式更简单。 里面控制与通信都是现成的。10分钟就学会了。
还是回到原来的说法,大部分情况下,单机多线程跑爬虫足够用了。 不需要分布式。而且效率甚至比分布式更高。
你只需要将任务分配到不同的机器上,然后各运行各自己的,结果合并一下就可以。 这个与nutch人map, reduse也没有什么差别。只是手工分,手工合并。当然也可以用脚本分,脚本合并,脚本远程启动。有一个远程控制模块,似乎叫rpy。很简单,很容易上手。可以远程控制一个模块。
数据库用postgresql不是很好。因为爬行结果放在关系型数据库里太吃力。特别是网页内容。通常是URL放在redis里。 内容放在文件系统里,你可以用hadoop+hdfs+thrift方案放在hadoop里。
如果使用了hadoop,就干脆模仿nutch的流程,把python脚本也交给hadoop去管理好了。
至于控制与通信这个都让hadoop来处理好了。
当然我个人觉着rpy方式更简单。 里面控制与通信都是现成的。10分钟就学会了。
还是回到原来的说法,大部分情况下,单机多线程跑爬虫足够用了。 不需要分布式。而且效率甚至比分布式更高。
更多追问追答
追问
我分布式主要是为了防止被封 ,因为我要很频繁的采集对方,
追答
哦。这个你用一个多IP代理就可以。或者是用家里的ASDSL,自动拨号重连后会重新分析一个IP给你。一天可以拥有2000多个IP。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询