爬虫 *敏*感*词*数据 采集心得和示例
优采云 发布时间: 2020-08-23 04:03爬虫 *敏*感*词*数据 采集心得和示例
本篇主要介绍网站数据特别大的采集心得
1. 什么样的数据能够称为数据量大:
我认为这个可能会由于每位人的理解不太一样,给出的定义 也不相同。我觉得定义一个采集网站的数据大小,不仅仅要看这个网站包括的数据量的大小,还应当包括这个网址的采集难度,采集网站的服务器承受能力,采集人员所调配的网路带宽和计算机硬件资源等。这里我暂且把一个网站超过一千万个URL链接的称作数据量大的网站。
2. 数据量大的网站采集方案:
2.1 . 采集需求剖析:
作为数据采集工程师,我觉得最重要的是要做好数据采集的需求剖析,首先要预估这个网址的数据量大小,然后去明晰采集哪些数据,有没有必要去把目标网站的数据都采集下来,因为采集的数据量越多,耗费的时间就越多,需要的资源就越多,对目标网站造成的压力就越大,数据采集工程师不能为了采集数据,对目标网站造成很大的压力。原则是尽量少采集数据来满足自己的需求,避免全站采集。
2.2. 代码编撰:
因为要采集的网站数据好多,所以要求编撰的代码做到稳定运行一周甚至一个月以上,所以代码要足够的强壮,足够的强大。一般要求做到网站不变更模板,程序能始终执行出来。这里有个编程的小技巧,我觉得很重要,就是代码编撰好之后,先去跑一两个小时,发现程序的一些报错的地方,修改掉,这样的前期代码测试,能保证代码的健壮性。
2.3 数据储存:
当数据量有三五千万的时侯,无论是MySQL还是Oracle还是SQL Server,想在一个表上面储存,已经不太可能了,这个时侯可以采用分表来储存。数据采集完毕,往数据库插入的时侯,可以执行批量插入等策略。保证自己的储存不受数据库性能等方面的影响。
2.4 调配的资源:
由于目标网站数据好多,我们免不了要去使用大的房贷,内存,CPU等资源,这个时侯我们可以搞一个分布式爬虫系统,来合理的管理我们的资源。
3. 爬虫的道德
对于一些中级的采集工程师,为了更快的采集到数据,往往开了好多的多进程和多线程,后果就是对目标网站造成了dos攻击,结果是目标网站果断的升级网站,加入更多的反爬策略,这种对抗对采集工程师也是非常不利的。个人建议下载速率不要超过2M,多进程或则多线程不要过百。
示例:
要采集的目标网站有四千万数据,网站的反爬策略是封ip,于是专门找了一台机器,开了二百多个进程去维护ip池,ip池可用的ip在500-1000个,并且保证ip是高度可用的。
代码编撰完毕后,同是在两台机器上运行,每天机器开启的多线程不超过64个,下载速率不超过1M.
个人知识有限,请大牛多多包涵