例如,我有一个蜘蛛,可从网站上抓取一些电话信息。
通常,我只需要打开一个cmd并运行脚本即可。
那么此脚本将占用所有计算机资源来运行脚本(CPU,Internet带宽)吗?我的意思是,一位同事问我:“如果我打开几个cmd并运行相同的脚本,会更快吗?”。
因此在1台PC上,1 cmd + 1 spiderA
与several *(1 cmd + 1 spiderA)
相比,后者会更快吗?还是不需要后者操作?
另一个类推(如果上面的描述仍然不清楚):
假设一台PC拥有100%的资源。
如果1 cmd + 1 spiderA
仅占20%,那么2* (1 cmd + 1 spiderA)
,后一种组合会占40%还是分成10%?
问这个问题的目的是要确保蜘蛛可以使用1台PC的所有资源。
答案 0 :(得分:0)
在大多数情况下,爬网的瓶颈是带宽/延迟,并且通过在相同的连接上运行同一蜘蛛的多个实例,您将一无所获,因为scrapy已经并发,并且将占用配置为(CONCURRENT_REQUESTS等)。例如,如果您要从缓存中爬取大量内容,并且非io绑定代码(html解析等)变得更加严格,那么多线程/多处理可能会变得有用,但是通常我会说这是过早的优化。