1. 程式人生 > >職場社交軟體脈脈職言區最近一個星期在聊什麼?

職場社交軟體脈脈職言區最近一個星期在聊什麼?

 

工作之餘在學習python,筆者主流語言是php,初學抓取了近來一個星期的脈脈職言區的帖子,現將過程記錄如下。

脈脈是一款職場社交軟體,大家會在職言區,也就是之前的匿名區去吐槽,但是帖子是登入之後才能看,所以第一步需要python模擬登入

模擬登入

首先在網頁上登入,開啟開發者工具,會看到一個gossip_list連線,這個就是列表的介面了,引數需要如下

 

是的,右邊的引數就是我們獲取資料的時候需要的引數了,cookie資訊放在header頭裡模擬瀏覽器登入資訊,把引數拼接好,去訪問,能正常返回資料,如下圖:

這樣就拿到了資料結構了,然後寫獲取URL的方法,拼接URL,程式碼如下

def geturl(page):
        url = 'https://maimai.cn/sdk/web/gossip_list?'
        params = {
                'u':'****',
                'channel':'www',
                'version':'4.0.0',
                '_csrf':'*****',
                'access_token':'*****',
                'uid':'*****',
                
'token':'*****', 'page':page, 'jsononly':'1' } for item in params: url = url + item + '='+ params[item] + "&" url = url[:-1] return url;

 

獲取了URL之後,根據已經拿到的cookie去拿取資料,程式碼如下:

def getGossipList():
        headers
={ 'Accept':'text/html,application/shtml+xml,application/xml', 'Accept-Encoding':'gzip, deflate, br', 'Accept-language':'zh-CN,zh;q=0.9', 'Connection':"keep-alive", 'Host':'maimai.cn', 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36', 'cookie':'******, 'referer':'https://maimai.cn/gossip_list' } i = 0 while (i<200): url = geturl(str(i)); r = requests.get(url,timeout=10,headers=headers) if r=='': return data=r.json()['data'] for item in data: saveData(item) i = i+1

 

存取資料

把拿到的資料存入sqlite,一般Mac或者Linux都自帶,存取下來供後續分析,程式碼如下:

def saveData(item):
        related_tags = ''
        conn = sqlite3.connect('/Users/kumufengchun/maimai.db')
        cursor = conn.cursor()
        for tag in related_tags:
                print(tag)
                sys.exit()
                related_tags += tag['name'] + ','
        ins = "insert into gossip values(null,?,?,?,?,?,?)"
        v=(item['text'] if(item.has_key('text')) else '',
        item['author'] if(item.has_key('author')) else '',
        item['name'] if(item.has_key('name')) else '',
        item['avatar'] if(item.has_key('avatar')) else '',
        related_tags,
        item['time'] if(item.has_key('time')) else '')
        cursor.execute(ins, v)
        conn.commit()
        conn.close()

資料分析

資料存取下來了,就可以分析了,每個崗位發貼數量,用tableau簡單的作圖表如下圖:

製作雲圖

想了解大家都在聊啥,用jieba分詞先把帖子內容分詞,然後在用wordcloud作雲圖,程式碼如下:

def makeYuntu():
        conn = sqlite3.connect('/Users/yangjiao/maimai.db')
        c = conn.cursor()
        cursor = c.execute("select text from gossip")
        f = ''
        for row in cursor:
                text = jieba.cut(row[0], cut_all=False)
                f +=" ".join(text)
        wordcloud = WordCloud(
                font_path="Deng.ttf",
                background_color="white",
                width=1920,
                height=1080,
                margin=2).generate_from_text(f);
        plt.imshow(wordcloud)
        plt.axis("off")
        plt.show()
        wordcloud.to_file('maimai.png')
        conn.close()

 

 

製作的雲圖如下所示

好了,第一次抓取資料的嘗試就到這了。

關於模擬瀏覽器登入的有很多方法參考文件:https://www.cnblogs.com/chenxiaohan/p/7654667.html 

關於sqlite的學習使用:http://www.runoob.com/sqlite/sqlite-python.html

關於python的使用:http://www.runoob.com/python3/python3-if-example.html

關於wordcloud的學習:https://blog.csdn.net/cy776719526/article/details/80171790

           https://www.cnblogs.com/jlutiger/p/9176517.html

關於jieba的學習:https://blog.csdn.net/linzch3/article/details/71253541

參考愛奇藝的爬取資料:https://blog.csdn.net/csdnnews/article/details/84781953