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()
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 」,後臺回覆「
年終獎 」便可獲取完整代碼。