爬蟲分析新浪微博人際關(guān)系

概覽圖

? ? 好久沒玩過新浪微博,突然來心情想分析下,于是有了這個單線程且慢吞吞的小爬蟲??催@圖還是很震撼的,提供個我的在線預覽版本?傳送門?點擊拖動,滾輪縮放,在無縮放的時候可以拖節(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]

為了方便,我搞了兩個事務:


添加關(guān)系的
添加用戶數(shù)據(jù)的

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


瞎寫了點流程

數(shù)據(jù)爬取完成后自己點擊停止,然后等他把隊列的的數(shù)據(jù)保存起來,下次直接恢復爬取。實際上,一般停止都是因為4xx錯誤了,會自動停止并保存的。這時候一般有4K數(shù)據(jù)了,你再爬的話,可能渲染不出了,網(wǎng)頁會賊卡的。

停止爬蟲后,看代碼中的out兩個類,輸出兩個js文件。js結(jié)構(gòu)如下:別問為什么


這是關(guān)系表
這是數(shù)據(jù)表,我都懶得打碼了,不要去騷擾他們哦

反正結(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é)議。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容