说说爬虫分享

    从去年毕业工做到如今一直没写博客,以前一直想总结下这一年的工做经历,可是感受有点乱,还有时间关系,也就一直搁置了,也借这篇文章简单叙述下吧。git

开篇:

    哈哈,还记得有次偶尔在博客园上看到别人发的,《3000w腾讯用户数据》样子的一篇文章,感受很不错,本身忍不住也想实现下QQ说说的爬虫。
爬虫程序大概是这个样子的:

如下是流程图,更清晰些:(流程图标签关系,其实用户和说说只是两个表,并非分开的数据库)

爬虫效率:(数据)

图上的标识可能看不太懂,我加下注释。
每一列表示一个数据队列的数据状况
Add--->队列增长
Pop--->出队列
Size--->当前队列大小
接下来解释下使用到的各个队列。
UPend ---> UserPending 用户等待队列,等待爬虫去爬取的用户ID,从数据库中获取。
UFsh--->UserFinish 用户爬取完成队列,爬虫爬取完成一个用户的相关数据后,要将该用户对应的数据库爬取关键字设置为true,表示爬虫爬取过了。
UJoin--->UserJoin 新用户加入队列,等待新的用户加入数据库中,在爬虫爬取用户相关数据时候,会获得新的(数据库中不存在)用户ID,将其放入数据库中,用于以后爬取。
TPend--->TalkPending 说说代爬队列,这里面保存的是待爬说说用户的ID,从数据库中获取。
TJoin---> TalkJoin 新说说加入队列,等待新爬到的说说数据放入到数据库中。
Download---> 没什么好书的爬虫的网络传输速率,不肯定这里是不是【真实】的字节数,详见下面下载速率计算方法。
 
本人用的是20Mbps的联通网图中能够看出,大概说说的爬取效率是1300条/s的速度,这样一天大概是1300*24*60*60 = 112,320,000 (1亿多)条。有木有不少的赶脚~
实测大约40h能爬到1亿条数据,中间网路,磁盘读写,CPU性能等问题致使(测试机器:双核4G,WinSrv2008,机械硬盘,外网下行100Mbps)
下边只是发了个数据库截图,相信用过MongoDB的兄弟应该能看懂的。
PS:MongoDB的数据库表结构没有给出,以后会给个详细的表结构。
 
 
 
 
 
 
相关文章
相关标签/搜索