大家公司今年會發年終獎嗎?Python告訴你你們怎麼說



01 目標

場景:又到一年年末,你們辛辛苦苦給公司幹了一全年,相信你們比較關心的是今年公司「 年終獎 」獎勵方案。
和往年不同,今年經歷了資本HD、裁Y潮,不少公司發的年終獎比例少了不少或者乾脆選擇不發。
今天是要抓取知識星球的一篇關於「 年終獎 」帖子,獲取到全部球友的留言信息,而後使用「 jieba 」拆分紅詞語,最後使用「 wordcloud 」生成詞雲。

02 準備工做

首先,在 PC 上配置好「 mitmproxy 」環境,手機上配置好證書,PC 和手機保證在同一個局域網內。
另外,須要保證已經在虛擬環境下安裝必要的庫。
# 分詞庫
pip3 install jieba

# 詞雲
pip3 install wordcloud複製代碼
而後,新建一個腳本文件「 nzj.py 」來攔截 APP 段的請求,對獲取到的響應作其餘處理。使用 mitmproxy下的「 mitmdump 」組件啓動監聽程序。
$ mitmdump -s nzj.py
Loading script nzj.py
Proxy server listening at http://*:8080複製代碼

03 爬取思路

咱們首先打開知識星球的這篇帖子。


重寫「 response(flow) 」方法,解析內容獲取到評論內容,寫入到文本中。
def response(flow):
    request = flow.request
    response = flow.response

    # 請求的地址
    request_url = request.url
    # 篩選
    if 'comments' in request_url and 'zsxq' in request_url:
        # 返回的內容
        response_content = response.content.decode('utf-8')
        comments = json.loads(response_content)['resp_data']['comments']

        # 最後一頁
        if len(comments) == 0:
            print('一共有%d個球友發表了本身的見解' % comment_count)
        else:
            comment_count += len(comments)
            for comment in comments:
                comment_content = comment['text']
                with open(filename, 'a') as f:
                    f.write(comment_content + '\n')

複製代碼
滾動屏幕,直達加載完全部全部球友的評論數據,並保存到文件中。能夠看到一共有「 228 」個球友針對今年公司年終獎發表了本身的見解。

而後使用 wordcloud 讀取文本內容,生成詞雲圖片並保存到本地,頭圖就是最後獲取到的結果。
代碼很是簡單,就直接上代碼了。
def generate_word_cloud():
    """ 生成詞雲 :return: """
    with open(filename, 'r') as f:
        word_content = f.read()

        # 使用jieba去分割
        wordlist = jieba.cut(word_content, cut_all=True)

        wl_space_split = " ".join(wordlist)

        font = r'/Users/xingag/Library/Fonts/SimHei.ttf'

        wordcloud = WordCloud(font_path=font, width=1080, height=1920, margin=2).generate(wl_space_split)

        # 顯示圖片
        plt.imshow(wordcloud)
        plt.axis("off")

        # 按照設置保存到本地文件夾
        wordcloud.to_file("./output.png")複製代碼

本文首發於公衆號「 AirPython 」,後臺回覆「 年終獎 」便可獲取完整代碼。
相關文章
相關標籤/搜索