久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

微信大揭秘——用Python玩轉(zhuǎn)微信(一)

 空谷天籟 2018-01-20

    有讀者叫樹根有空就要多更新公眾號,,樹根也在想要不要轉(zhuǎn)型,,畢竟最近在自學(xué)Python。但是不管怎么樣,,我都想把自己學(xué)到的覺得最有意思的,,用自己的方式去呈現(xiàn)給大家看。

    今天想給大家的文文是關(guān)于怎么用Python爬一爬自己的微信,,本文是這個系列的第一篇,。因?yàn)镻ython關(guān)于微信的工具庫itchat有很多好玩的功能,比如自動回復(fù)和查看撤回消息等等,,其他功能樹根會慢慢摸索,,在日后會繼續(xù)教大家怎么用Python玩轉(zhuǎn)微信。

    樹根會以自己的微信作為白老鼠,,來展示給大家看,。想自己動手試試的讀者也可以自己用Python試試。


   ”itchat“是由@LittleCoder開發(fā)的,,當(dāng)然Python關(guān)于微信的庫有很多,,只是”itchat“較為簡單和方便。接下來的文章內(nèi)容都是基于這個庫。


    接下來,,就是樹根微信大揭秘時間了


    樹根已經(jīng)默認(rèn)大家安裝好Python了,,還沒安裝的請看上一篇文文《回憶or寄望,制作一份屬于自己的云圖詞》,。所有第一步肯定就是工具庫的安裝,。打開cmd命令窗口,或者Anaconda Prompt,,依次輸入以下命令安裝相關(guān)的工具庫:


pip install itchat
pip install pyecharts


     然后我們在Python中導(dǎo)入所需的工具庫:


#微信工具庫
import itchat
#畫圖的庫,,Bar柱狀圖,Pie餅圖,,Map地圖

from pyecharts import Pie,Map,Bar
#數(shù)據(jù)庫

import pymysql 


     然后我們可以執(zhí)行以下代碼登錄微信以及檢驗(yàn)是否登錄成功:


itchat.login()#生成二維碼,,掃描登錄微信

itchat.send('樹根雖然長得丑,但是很溫柔','filehelper') 


    執(zhí)行代碼以后會生成一個二維碼,,用手機(jī)微信掃描以后就可以登錄微信了,。然后第二行代碼是發(fā)送“'樹根雖然長得丑,但是很溫柔'”到文件傳輸助手,,那個“filehelper”就是文件傳輸助手,。

    我們來看看是否成功:

    

    太好了,看到這里就證明是成功了,,可以進(jìn)行接下來的事(什么,,說我瞎說什么大實(shí)話?,?,?)。

    統(tǒng)計(jì)微信男女好友比例并可視化

    要統(tǒng)計(jì)微信好友的男女比例,,首先當(dāng)然要獲取所有微信好友的數(shù)據(jù),,itchat提供了get_friends這個方法來獲取好友的所有信息,我們直接看代碼:


#保持登錄
itchat.auto_login(hotReload=True)

itchat.dump_login_status()
#獲取好友信息

friends = itchat.get_friends(update=True)[:]
#總好友數(shù),,減去自己

total = len(friends)-1
#爬取的各個參數(shù)

result=[('RemarkName','備注'),('NickName','微信昵稱'),

        ('Sex','性別'),('City','城市'),('Province','省份'),

        ('UserName','用戶名'),('Signature','個性簽名')]

every = []

for user in friends:

    everys = {}

    everys['remarkname'] = user.get('RemarkName')

    everys['city'] = user.get('City')

    everys['nickName'] = user.get('NickName')

    everys['sex'] = user.get('Sex')

    everys['province'] = user.get('Province')

    everys['userName'] = user.get('UserName')

    everys['signature'] = user.get('Signature')

    every.append(everys)

for we in every:

    remarkname = we['remarkname']

    city = we['city']

    nickName = we['nickName']

    sex = we['sex']

    province = we['province']

    userName = we['userName']

    signature = we['signature']

    connection = pymysql.connect(

            host='192.168.31.40',  # 連接的是本地?cái)?shù)據(jù)庫,,你自己的IP

            user='acer',        # mysql用戶名,自行輸入

            passwd='*****',  # 密碼,,自行輸入

            db='*****',      # 數(shù)據(jù)庫的名字

            charset='utf8mb4',     # 默認(rèn)的編碼方式:

            cursorclass=pymysql.cursors.DictCursor)

    

    with connection.cursor() as cursor:

        # 創(chuàng)建更新值的sql語句

        sql = 'INSERT INTO wechat(remarkname,nickName,userName,sex,province,city,signature) VALUES (%s,%s,%s,%s,%s,%s,%s)'

        cursor.execute(sql,(remarkname,nickName,userName,sex,province,city,signature))

        

        # 提交本次插入的記錄

        connection.commit()   

    connection.close()

print ('完成')


    我們來看一下是否爬取成功:

    以下是Python變量區(qū)的friends變量:


來對比一下樹根的微信好友個數(shù):

    

    太好了,,看到這里就證明又是成功了。


我們來執(zhí)行以下代碼print一下男女比例結(jié)果:


 

male = female = other = 0

for i in friends[1:]:

    sex = i['Sex']

    if sex == 1:

        male += 1

    elif sex == 2:

        female += 1

    else:

        other +=1


#計(jì)算朋友總數(shù)

total = len(friends[1:])

print('男性好友: %.2f%%' % (float(male)/total*100) + '\n' +

'女性好友: %.2f%%' % (float(female) / total * 100) + '\n' +

'不明性別好友: %.2f%%' % (float(other) / total * 100))


    輸出結(jié)果為:

    可視化呈現(xiàn):


pie = Pie('震驚,!原來樹根的微信好友是這樣的')

pie.add(' ',['男' ,'女','外星人'],[(float(male)/total*100),(float(female) / total * 100),(float(other) / total * 100)])

pie.render()

bar = Bar('震驚,!原來樹根的微信好友是這樣的')

bar.add(' ',['男' ,'女','外星人'],[(float(male)/total*100),(float(female) / total * 100),(float(other) / total * 100)])

bar.render()


    

    執(zhí)行以上代碼會在默認(rèn)文件路徑生成名為render的html文件,,打開即可得可視化結(jié)果:

        

    還可以是柱狀圖:

    啊,,一不小心就暴露了自己女性朋友比較多的事實(shí)。。,。


    再仔細(xì)觀察friends列表,,發(fā)現(xiàn)里面還包含了好友昵稱、省份,、城市,、個人簡介等等的數(shù)據(jù),剛好可以用來分析好友城市分布,,最好的方式是定義一個函數(shù)把數(shù)據(jù)都爬下來,,存到數(shù)據(jù)框里,再進(jìn)行分析,。


    因此我們可以執(zhí)行以下代碼把數(shù)據(jù)導(dǎo)出到excel:


#定義一個函數(shù),,用來爬取各個變量

def get_var(var):

    variable = []

    for i in friends:

        value = i[var]

        variable.append(value)

    return variable


#調(diào)用函數(shù)得到各變量,并把數(shù)據(jù)存到csv文件中,,保存到桌面

NickName = get_var('NickName')

Sex = get_var('Sex')

Province = get_var('Province')

City = get_var('City')

Signature = get_var('Signature')


from pandas import DataFrame

data = {'NickName': NickName, 'Sex': Sex, 'Province': Province,

        'City': City, 'Signature': Signature}

frame = DataFrame(data)

frame.to_csv('C:/Users/acer/Desktop/data.csv', index=True)


    執(zhí)行以后發(fā)現(xiàn)桌面多了一個csv格式的文件,,打開發(fā)現(xiàn)里面就是friends中的數(shù)據(jù):

   

     導(dǎo)出成功!

統(tǒng)計(jì)微信好友來自哪里


    用excel進(jìn)行對廣東的好友進(jìn)行預(yù)處理和統(tǒng)計(jì)以后(樹根差點(diǎn)也想把MATLAB也用上),,導(dǎo)入回Python,,執(zhí)行以下代碼:


import pyecharts as p

#這些數(shù)據(jù)是經(jīng)過excel處理的

city_name = ['朝陽市', '潮州市', '東莞市', '佛山市', '廣州市', '河源市',

       '惠州市', '汕頭市', '江門市', '揭陽市','茂名市','梅州市',

      '清遠(yuǎn)市', '汕頭市','汕尾市', '韶關(guān)市', '深圳市', '肇慶市',

      '湛江市', '云浮市', '中山市', '珠海市']

num = [2,9,27,24,86,3,7,10,22,30,9,9,5,22,2,1,7,44,13,14,

      5,2]


cc = p.Map('樹根的微信好友分布(僅廣東)',width=1200,height=600)

cc.add('',city_name,num,maptype='廣東',is_visualmap=True,visual_text_color='#000')

cc.render()


    同樣我們在默認(rèn)的路徑打開render的html文件,即可得可視化結(jié)果:

    發(fā)現(xiàn)樹根的好友來自廣州的最多,,有86個,,其次就是肇慶的好友,44個,,第三就是揭陽和潮州的好友,,分別是30和27,由上面的可視化結(jié)果也可以大致看出(好友分布人數(shù)對應(yīng)左下角的顏色條),。

微信好友個性簽名的自定義詞云圖


    好玩的來了,。之前已經(jīng)爬下了每個好友的個性簽名,剛好可以分析一下大伙兒個性簽名時使用的高頻詞語是什么,,用上上一篇文文的代碼(回憶or寄望,,制作一份屬于自己的云圖詞)順便可以做個詞云圖。

    先把原先爬下來的個性簽名(Signature)打印出來,,發(fā)現(xiàn)有很多本來是表情的,,變成了emoji、span,、class等等這些無關(guān)緊要的詞,,需要先替換掉,另外,,還有類似<>/= 之類的符號,,也需要寫個簡單的正則替換掉,,再把所有拼起來,得到text字串,。

    以下是執(zhí)行代碼:


import re

siglist = []

for i in friends:

    signature = i['Signature'].strip().replace('span','').replace('class','').replace('emoji','')

    rep = re.compile('1f\d+\w*|[<>/=]')

    signature = rep.sub('', signature)

    siglist.append(signature)

text = ''.join(siglist)



    接著就可以把JB,,啊不,把結(jié)巴分詞這個包搞進(jìn)來分詞(搞不懂這個庫的名字怎么來的),。



import jieba

wordlist = jieba.cut(text, cut_all=True)

word_space_split = ' '.join(wordlist)


    分詞成功以后,,終于可以進(jìn)入畫圖階段了??梢愿鶕?jù)自己想要的圖片,、形狀、顏色畫出相似的圖形,。樹根這次執(zhí)行的云圖詞代碼比上一篇的入門要高大上一點(diǎn),,我們需要把matplotlib、wordcloud,、numpy,、PIL等包搞進(jìn)來:


import matplotlib.pyplot as plt

from wordcloud import WordCloud, ImageColorGenerator

import numpy as np

import PIL.Image as Image

coloring = np.array(Image.open('C:/Users/acer/Desktop/timg.jpg'))

my_wordcloud = WordCloud(background_color='white', max_words=2000,

                         mask=coloring, max_font_size=40, random_state=42, scale=2,

                         font_path='C:/Users/acer/Desktop/msyh.ttc').generate(word_space_split)


image_colors = ImageColorGenerator(coloring)

plt.imshow(my_wordcloud.recolor(color_func=image_colors))

plt.imshow(my_wordcloud)

plt.axis('off')

plt.show()


    我們來看看結(jié)果是怎么樣的:

    能猜到是什么動物嗎?沒錯就是皮卡丘?。ㄊ裁茨憔尤徽f看不出,??,?)

以下是原圖:


    看來,,在我的微信好友的個人簽名里,有人善于聆聽,,有人強(qiáng)調(diào)善良,,有人重視靈魂,有人凝視人生,。一直在等待,,不放棄尋找。歷盡曲折,,不畏虛偽,。真心如一,不能辜負(fù),。一步一生多努力,,一起一切one more dream(樹根真編不下去了,其實(shí)樹根的好友簽名無非就是我不能沒有你你不能失去我哈哈哈哈),。

    

最后

    以上是不是很有趣呢,?是不是又打開了一扇新世界的大門呢?

    我微信好友也不是太多,,如果微信好友有幾千個,,可以得到幾千條數(shù)據(jù),,分析一下還是很有價值的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多