我有一个爬行过程,我用python编写,我在亚马逊的ec2实例上运行。我编写了爬虫程序,以便使用它的结果向单独的“hub”实例报告。集线器处理爬网程序的结果,爬网程序可以自由地继续爬网。我对这个爬行实例的想法是,克隆爬行器的多个实例很容易,每个实例都会向集线器报告以进行处理。
所以,在这一点上,我有一个集线器和8个独立的爬虫(都在他们自己的实例上)不断地爬行并报告回来等。
我正在考虑使用小而独立的抓取工具:
我的问题是;这有效吗?我是否会更好地开辟更大的实例并以某种方式分解网络利用率?
提前感谢您的意见。如果这是关于stackoverflow的主题,请原谅我。
答案 0 :(得分:2)
我对你问题的看法。
(1)存在冗余,因此如果一个爬虫被挂起,其余的爬虫可以继续工作。
使用自动扩展组进行设置以管理这些爬网程序实例。
(2)(这是一个假设)如果每个爬虫都有自己独立的ip,我有更好的网络利用率。
是的,如果在公共子网中创建,ec2实例可以拥有自己的公共和私有IP。在一个区域内,您可以设置在不同的可用区域上启动实例(例如,us-west-2区域有三个AZ)。有了它,您可以传播网络使用情况。
(3)我可以根据当前需要启动多个爬虫或缩小。
使用自动缩放组,你应该很容易控制这个***
我的问题是;这有效吗?
*如果可以,请在不同地区(美国,欧盟,亚洲等)设置ec2实例,以减少某些网站的延迟。 * 强>
我是否会更好地启动更大的实例并以某种方式分割网络利用率?
*在您的情况下,单独的较小实例应该是更好的解决方案,它也为您节省了很多钱。也许您也可以考虑将spot instance
用于这些抓取工具。保存更多*