
? ? 好久沒玩過新浪微博,突然來心情想分析下,于是有了這個單線程且慢吞吞的小爬蟲??催@圖還是很震撼的,提供個我的在線預覽版本?傳送門?點擊拖動,滾輪縮放,在無縮放的時候可以拖節(jié)點移動。
? ? 本來是想著詳細點說一下的,然后發(fā)現(xiàn)其實也不難,懶得講了,無非分兩步。1.獲取數(shù)據(jù)。2.制作力導向圖。
爬微博很特么煩,我又沒那么多ip,只通過切換UA來爬取數(shù)據(jù)了。我需要的數(shù)據(jù)大致分為兩類:用戶數(shù)據(jù),關(guān)系數(shù)據(jù)。我用了兩張表來存儲數(shù)據(jù),一張表用來保存隊列。
用戶表
[id][uid][name][gender][avatar][lv]
關(guān)系表
[id][uid][fid]
存儲記錄的隊列表
[id][json]
為了方便,我搞了兩個事務:


整個爬蟲采用隊列存取task,首先入隊自己的數(shù)據(jù),然后從自己的數(shù)據(jù)開始爬。

數(shù)據(jù)爬取完成后自己點擊停止,然后等他把隊列的的數(shù)據(jù)保存起來,下次直接恢復爬取。實際上,一般停止都是因為4xx錯誤了,會自動停止并保存的。這時候一般有4K數(shù)據(jù)了,你再爬的話,可能渲染不出了,網(wǎng)頁會賊卡的。
停止爬蟲后,看代碼中的out兩個類,輸出兩個js文件。js結(jié)構(gòu)如下:別問為什么


反正結(jié)構(gòu)是這么個結(jié)構(gòu),有節(jié)點,有連線就可以連了,然后就交給d3.js了。網(wǎng)上的教程很多用的v3版本的,我這是用的v4版,svg性能畢竟捉急,雖然canvas也不咋地,但是好歹比svg強。
然后把兩個文件拷到v4.html目錄下,就行了。然后就打開html等啊等。
源碼我放在github上,這里。代碼不難,不想看只想裝逼的參看這個流程:
在mainThread里面把初始數(shù)據(jù)改成你的,uid可以在微博手機網(wǎng)頁版,點粉絲,然后看網(wǎng)址:http://m.weibo.cn/p/second?containerid=1005053268063401_-_FOLLOWERS 這個3268063401就是uid了。
然后運行main,點擊開始,然后等他自己停了,或者你自己點個停止,等他保存完。然后打開out包下的兩個類,運行以后輸出到c盤,拷貝到v4.html下。
需要注意的是數(shù)據(jù)庫我用的mysql,庫為sina,表為trealition,tuser,tqueue。自建數(shù)據(jù)庫然后添加我那兩個事務。記得添加gson和mysql的jar包,拒絕小白問題。
ps:有需要初級android開發(fā)的么,6月才畢業(yè)呢,現(xiàn)在在做車聯(lián)網(wǎng)設(shè)備的公司實習,技能加成:android串口編程,RFID的操作,駕培TCP協(xié)議。