首页 > 解决方案 > 在多个shell下运行同一个蜘蛛,会更快吗?

问题描述

例如,我有一个从网站抓取一些电话信息的蜘蛛。

通常,我会简单地打开一个 cmd 并运行脚本。

那么这个脚本会占用所有的计算机资源来运行脚本(CPU、互联网带宽)吗?我的意思是,有同事问我,“如果我打开多个 cmd 并运行相同的脚本会更快吗?”。


那么在 1 PC , 1 cmd + 1 spiderAvs下several *(1 cmd + 1 spiderA),后者会更快,还是不需要后面的操作?

另一个类比(如果上面的描述仍然不清楚):

假设一台 PC 拥有 100% 的资源。

如果1 cmd + 1 spiderA只占20%,那么2* (1 cmd + 1 spiderA)后一种组合是占40%还是各分10%?

问这个的目的是要确保蜘蛛可以使用 1 台 PC 的所有资源。

标签: pythonweb-scrapingscrapyscrapy-spider

解决方案


在大多数情况下,抓取的瓶颈是带宽/延迟,通过在同一连接上运行同一个蜘蛛的多个实例,您将一无所获,因为scrapy 已经并发并且将占用配置为(CONCURRENT_REQUESTS 等)的尽可能多的连接. 例如,如果您从缓存中抓取大量数据并且非 io 绑定代码(html 解析等)变得更严格,多线程/多处理可能会变得有益,但通常我会说这将是一个过早的优化。


推荐阅读