赞
踩
前言
之前写了一篇scrapy和golang爬虫性能对比,引起了很大的争议(就是被各位大佬喷的很惨的意思)。其中,很多人提了数据库读写的问题,看到大家的评论后不久我又测了一下,把写数据库的那部分代码注释掉后,速度瞬间就快了。当时由于没时间详细的测试,就把文章撤了下来,最近我抽时间吧代码整了一下,有了个新的测试,确实是数据的问题,各位可以看看。
上一篇文章的情况
爬虫的来历是因为团队需要一批公司名称的语料,先是用scrapy搭建了一个爬虫,后面又抱着一种试一试的心态用golang复现了一个同样的爬虫,对比了一下爬取速度,scrapy版本的和golang版本的最终差距很大,当时就很奇怪,做了个记录发到知乎上来了,当时的情况对比如下。
我详细的说明一下情况,线程池方面,scrapy底层用的twisted,默认是16个concurrent requests,至于这里是线程实现还是协程实现我就不计较了。golang是goroutine,是golang自己实现的一个东西。在爬取约650w完整数据集的时候,scrapy是采用默认设置,golang是自己实现了一个job/worker模型,设了个20个worker,相当于一个worker用一个goroutine,代码放在gayhub上。后来我又取了个较小的数据量,大约100页,即2.5w行数据,然后将scarpy和golang的worker数都设为16对比了一下,这就是这四列数据的来历。
另外,还需要说明一下爬取的目标,爬取目标是一个工商登记企业汇总的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。