爬虫分析新浪微博人际关系

概览图

    好久没玩过新浪微博,突然来心情想分析下,于是有了这个单线程且慢吞吞的小爬虫。看这图还是很震撼的,提供个我的在线预览版本 传送门 点击拖动,滚轮缩放,在无缩放的时候可以拖节点移动。

    本来是想着详细点说一下的,然后发现其实也不难,懒得讲了,无非分两步。1.获取数据。2.制作力导向图。

爬微博很特么烦,我又没那么多ip,只通过切换UA来爬取数据了。我需要的数据大致分为两类:用户数据,关系数据。我用了两张表来存储数据,一张表用来保存队列。

用户表

[id][uid][name][gender][avatar][lv]

关系表

[id][uid][fid]

存储记录的队列表

[id][json]

为了方便,我搞了两个事务:


添加关系的
添加用户数据的

整个爬虫采用队列存取task,首先入队自己的数据,然后从自己的数据开始爬。


瞎写了点流程

数据爬取完成后自己点击停止,然后等他把队列的的数据保存起来,下次直接恢复爬取。实际上,一般停止都是因为4xx错误了,会自动停止并保存的。这时候一般有4K数据了,你再爬的话,可能渲染不出了,网页会贼卡的。

停止爬虫后,看代码中的out两个类,输出两个js文件。js结构如下:别问为什么


这是关系表
这是数据表,我都懒得打码了,不要去骚扰他们哦

反正结构是这么个结构,有节点,有连线就可以连了,然后就交给d3.js了。网上的教程很多用的v3版本的,我这是用的v4版,svg性能毕竟捉急,虽然canvas也不咋地,但是好歹比svg强。

然后把两个文件拷到v4.html目录下,就行了。然后就打开html等啊等。

源码我放在github上,这里。代码不难,不想看只想装逼的参看这个流程:

在mainThread里面把初始数据改成你的,uid可以在微博手机网页版,点粉丝,然后看网址:http://m.weibo.cn/p/second?containerid=1005053268063401_-_FOLLOWERS 这个3268063401就是uid了。

然后运行main,点击开始,然后等他自己停了,或者你自己点个停止,等他保存完。然后打开out包下的两个类,运行以后输出到c盘,拷贝到v4.html下。

需要注意的是数据库我用的mysql,库为sina,表为trealition,tuser,tqueue。自建数据库然后添加我那两个事务。记得添加gson和mysql的jar包,拒绝小白问题。

ps:有需要初级android开发的么,6月才毕业呢,现在在做车联网设备的公司实习,技能加成:android串口编程,RFID的操作,驾培TCP协议。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容