對編程沒有興趣的朋友可以直接看後面的數據分析結果,
開發環境:win7下的
python3.5、MySQL5.7
編輯器:
pycharm2017.1、ipython,Navicat for mysql
需要的python第三方庫:
selenium、PIL、Requests、MySQLdb、csv、pandas、numpy、matplotlib、jieba、wordcloud
另外還用到了無頭瀏覽器PhantomJS。有興趣的加群(621710153)
主要思路:
一、通過selenium+phantomjs模擬登錄qq空間取到cookies和g_qzonetoken,並算出gtk
二、通過Requests庫利用前面得到的url參數,構造http請求
三、分析請求得到的響應,是一個json,利用正則表達式提取字段
四、設計數據表,並將提取到的字段插入到數據庫中
五、通過qq郵箱中的導出聯繫人功能,把好友的qq號導出到一個csv文件,遍歷所有的qq號爬取所有的說說
六、通過sql查詢和ipython分析數據,並將數據可視化
七、通過python的第三方庫jieba、wordcloud基於說說的內容做一個詞雲
閒話不多說,直接上代碼
通過selenium+phantomjs模擬登錄qq空間取到cookies和g_qzonetoken,並算出gtk
import refrom selenium import webdriverfrom time import sleepfrom PIL import Image#定義登錄函數def QR_login():
通過Requests庫利用前面得到的url參數,構造http請求
通過抓包分析可以找到上圖這個請求,這個請求響應的是說說信息
通過火狐瀏覽器的一個叫json-dataview的插件可以看到這個響應是一個json格式的,開心!
然後就是用正則表達式提取字段了,這個沒什麼意思,直接看我的代碼
def parse_mood(i):
其實到這裡爬蟲的主要的代碼就算完了,之後主要是通過QQ郵箱的聯繫人導出功能,構建url列表,最後等著它運行完成就可以了。這裡我單線程爬200多個好友用了大約三個小時,拿到了十萬條說說。下面是爬蟲的主體代碼。
#從csv文件中取qq號,並保存在一個列表中csv_reader = csv.reader(open('qq.csv'))friend=[]for row in csv_reader:
下面是爬取的數據,有100878條!(沒想到居然有這麼多)