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 」,后台回复「
年终奖 」便可获取完整代码。