前言
做微博数据抓取有很长一段时间了,最近把这样任务做到了极致。
简单的说,就是,现在全网任何活跃用户发送的一条微博,能够实时抓取到并存入本地数据库。
这项工作对微博网络舆情的监控预警,有非常重大的意义.
下面是针对这项工作的测试数据,已经可以达到对于全网5.5千万活跃用户上亿微博的实时微博采集。
如果对微博舆情监控有需求,可以进行合作,联系方式:[email protected]
实验数据
硬件配置
2台服务器,每台的配置如下
系统 | CPU | 内存 | 硬盘 |
---|---|---|---|
Ubuntu16.04 | E5-2630 v4 @ 2.20GHz * 8 | 32G | 1T |
抓取速度
每台服务器满负荷运转:
每台服务器启动50个爬虫进程,两台共100个爬虫进程
每个进程的抓取情况:
可以看到每个进程,每分钟可以抓取300+页面。那么,一天共可以抓取:
300(pages/(process*min)) * 100(prcesses) * 60*24(mins/day) = 43,200,000(pages/day)
所以一天可以抓取4.3千万的页面
如果抓取用户个人信息,1(data/page)
,
则一天的数据抓取量是 43,200,000(pages/day) * 1(data/page) = 43,200,000(data/day)
4.3千万
如果抓取用户微博数据,10(data/page)
,
则一天的数据抓取量是 43,200,000(pages/day) * 10(data/page) = 432,000,000(data/day)
4.3亿
数据库统计
MongoDB IO量
每秒4500+的数据插入量,所以一天就是4亿+的数据采集入库量
用户个人信息数据
微博用户id采用海量采集的方式,目前已经拥有5.5千万有效真实用户的微博id,并且在不断增长中
发掘id | 有效id | 有效比率 |
---|---|---|
97,267,435 | 55,832,401 | 0.574 |
用户微博数据
实时抓取5.5千万+有效用户的微博,数据统计
微博发表日期为11.20~11.24日之间的微博
11.20 | 11.21 | 11.22 | 11.23 | 11.24 |
---|---|---|---|---|
13,864,359 | 18,438,460 | 18,866,072 | 18,143,923 | 11,351,606 |
当前数据库总量:537,475,459 (5亿)
数据展示
用户数据
微博数据