本文介绍了爬虫对服务器的影响,主要是为了向小白普及爬虫的基础知识。
我们写爬虫的时候,首先想到的是打开多线程。如果我们用的语言是python,很不幸,因为Python存在 GIL,在任何时候,CPU内只有一条线程在运行,但是Python的多线程也可以提高爬虫的速度,而且当我们用Python的多线程写爬虫的时候,速度并不慢。为什么?因为爬虫偏向io,所以网络io和磁盘IO是爬虫最大的瓶颈。现在CPU处理速度很快,比请求还快。网络请求需要等待另一台服务器的响应,这是一个缓慢的过程。而在下载数据后将数据插入自己的数据库需要等待自己的磁盘响应。那么有没有更好的方法实现爬虫的并发下载呢?
答案是:可以,可以用第三方框架,比如异步框架gevent和tornado,或者Python的多进程+异步的方法,可以大大提高我们的下载速度。
爬行一个网站的时候,同时启动64个进程,是异步方式。下载速度稳定在700k左右,因为公司运营维护限制了网速,无法提高网速。然后内存消耗87%,内存消耗12G,CPU消耗100%。为什么CPU消耗这么高?主要是数据分析需要CPU和进程切换,也需要CPU。网页的大小应该在10k到20k之间。粗略统计,一分钟可以下载1750个网页,包括数据下载、解析、入库的全过程。这个下载速度是1750*60分钟,等于10.5万,也就是说一个小时可以下载10万个网页。
这个速度怎么样?我觉得这个下载速度很慢。为什么,因为这个网站是ip密封的,需要通过代理访问他们的服务器,这也是一个非常耗时的过程,只能通过ip池来解决,IP池维护着大约1000个有效的IP,并有专门的验证服务,可以随时提取一个IP来抓取目标网站。理想状态是一分钟抓取3000条数据,一天24小时抓取约500万页数据。
90%的网络流量是爬虫贡献的,给目标网站带来了很大的压力。为了避免破坏目标网站,不建议开启过多的并发。
Vecloud专门提供python爬虫ip代理服务器,百万ip库,随意切换;十余年IDC行业服务经验;在全球100多个国家和地区拥有数据中心!详情联系VeCloud客服。