免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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

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

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


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


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


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


pip install itchat
pip install pyecharts


     然后我們?cè)赑ython中導(dǎo)入所需的工具庫:


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

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

import pymysql 


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


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

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


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

    我們來看看是否成功:

    

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

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

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


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

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

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

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

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

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

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

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變量:


來對(duì)比一下樹根的微信好友個(gè)數(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í)行以上代碼會(huì)在默認(rèn)文件路徑生成名為render的html文件,打開即可得可視化結(jié)果:

        

    還可以是柱狀圖:

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


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


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


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

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)桌面多了一個(gè)csv格式的文件,打開發(fā)現(xiàn)里面就是friends中的數(shù)據(jù):

   

     導(dǎo)出成功!

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


    用excel進(jìn)行對(duì)廣東的好友進(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()


    同樣我們?cè)谀J(rèn)的路徑打開render的html文件,即可得可視化結(jié)果:

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

微信好友個(gè)性簽名的自定義詞云圖


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

    先把原先爬下來的個(gè)性簽名(Signature)打印出來,發(fā)現(xiàn)有很多本來是表情的,變成了emoji、span、class等等這些無關(guān)緊要的詞,需要先替換掉,另外,還有類似<>/= 之類的符號(hào),也需要寫個(gè)簡(jiǎ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é)巴分詞這個(gè)包搞進(jìn)來分詞(搞不懂這個(gè)庫的名字怎么來的)。



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é)果是怎么樣的:

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

以下是原圖:


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

    

最后

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

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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用Python做個(gè)微信自動(dòng)回復(fù)機(jī)器人
當(dāng) python 遇到你的微信的時(shí)候,你才發(fā)現(xiàn)原來你的微信好友是這樣的
python 玩微信,超有趣
微信群發(fā)太簡(jiǎn)單了!三秒通知到你的全部好友!Python牛逼!
用itchat爬取朋友圈好友信息
用python分析你的朋友圈,很好玩~
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服