你的位置:首页 > 数据库

[数据库]说说爬虫分享


    从去年毕业工作到现在一直没写博客,之前一直想总结下这一年的工作经历,但是感觉有点乱,还有时间关系,也就一直搁置了,也借这篇文章简单叙述下吧。

开篇:

    哈哈,还记得有次偶尔在博客园上看到别人发的,《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亿多)条。有木有很多的赶脚~
下边只是发了个数据库截图,相信用过MongoDB的兄弟应该能看懂的。
PS:MongoDB的数据库表结构没有给出,之后会给个详细的表结构。


 
 
项目源码地址:https://github.com/y85171642/SpiderX