Ruby多进程并行抓取网页

 

想研究一下各大网站首页有多少个连接,因而用Ruby写了一个脚本,用Beanstalk消息队列,把任务放入Beanstalk中,同时开启多个子进程,如20个,并行运行,同时抓取网页,先抓取完成的进程再次读取Beanstalk任务,继续执行,直到没有任务后,进程退出,主进程等待全部子进程退出后,打印抓取的消息。
Ruby的多线程实际是只能跑在单cpu上,而且同一时刻cpu只处理一个线程,因此采用多进程抓取,消息队列采用最简单的Beanstalk,须要安装Beanstalkd服务。
示例代码主要抓取电商网站测试。
代码能够直接运行,须要ruby 1.9版本,1.9一下要稍微修改才能运行。