最近学习了爬虫,结合wordcloud库,我们爬取电影评论,并分词绘制出该电影的画像。

话不多说
1、技术路线:(其中imageio是制作词云引用本地特殊图片作为词云图片的三方库)

import requests
from bs4 import BeautifulSoup
import jieba
import wordcloud
from imageio import imread

先看效果:
原图:

效果图:

2、绘制词云图片 draw()
创建变量comment保存爬取的所有评论,这里的comment是字符串,字符串内容通过allComment()函数实现,实现方式在第3条显示。
首先创建空字典D,利用jieba.lcut将字符串分词,并保存在字典D中(实现计频次功能)
创建的第二个字典d字典是为了将字典D中分词数量不足的键值对去除,if D[i] > 1:条件中更改数量1可自行去除分词数量低于多少的键值对。
用imread()实例化一个对象,用于加载自定义绘制的图片。

def draw():# comment变量是所有评论,用allComment函数获取comment = allComment()# 创建字典D,用于分词并统计D = {}for word in jieba.lcut(comment):if len(word) >= 2:D[word] = D.get(word, 0) + 1# 创建字典d,d = {}for i in D.keys():if D[i] > 1:d[i] = D[i]mk = imread('自由.jpg')image_colors = wordcloud.ImageColorGenerator(mk)w = wordcloud.WordCloud(font_path='msyh.ttc', mask=mk, background_color='white',color_func=image_colors)w.generate_from_frequencies(d)w.to_file('outfile.png')

3、爬取评论信息
getHtml()是固定用法,用于创建连接,返回网页源文,详细管理getHtml()的写法和原理可以参考我之前写的一篇文章"网络美女爬取",其中headers中cookie、referer、user-agent可在浏览器中查到,手动添加进来(1、打开URL后按F12 2、刷新 3、点击链接 4、点击标头 然后就可以看到这几个参数了)。

getComment()是获取单页的所有评论,传入getHtml()返回的网页信息,利用bs4库进行解析,提取,拼接正文

allComment()是将所有我们需求的爬取多少页的评论拼接,并返回一个文本信息,供draw()函数绘制词云,其中要说的是关于url的处理,这里观察评论页的url可以发现每页评论的url区别在于start参数不一致,每页20个评论,以此为倍数增加,运用了列表推导式,并用循环添加了后半部分,然后调用getHtml()、getComment()实现评论的爬取、解析、获取,最后返回的comment提供给draw()绘制词云。

def getHtml(url):  #固定格式,获取html文件headers = {'cookie': '__utmv=30149280.14247; _vwo_uuid_v2=D3556343CE2E9E566DF0C05A58AF2A096|1d52e48c7db254bf3507b77fb1dd0501; douban-profile-remind=1; viewed="3354490"; gr_user_id=36a9716a-5535-4142-9f17-98e3be67d379; __gads=ID=74f8b061d649d634-22085b49d8c700ee:T=1620293559:RT=1620293559:R:S=ALNI_MZvBMW7P41O7IT9NEROcocj39LBdw; UM_distinctid=1794105a1162-0655bea5a2d0ba-3e604809-144000-1794105a11774; ll="118168"; bid=eprWYq_M_1M; __utma=30149280.352782848.1599137845.1625878048.1625886682.11; __utmc=30149280; __utmz=30149280.1625886682.11.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ap_v=0,6.0; __utmb=30149280.2.10.1625886682','referer': 'https://movie.douban.com/subject/1292052/reviews?','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}try:r = requests.get(url, headers = headers)# 获取状态码,如果不是则200报错r.raise_for_status()# 修改编码为文本解析的编码格式r.encoding = 'utf-8'# 返回文本return r.textexcept:print('网络状态错误')
def getComment(text):soup = BeautifulSoup(text, 'html.parser')ls = soup.find_all('span', class_="short")comment = ''for l in ls:comment += l.stringreturn commentdef allComment():# 观察网址,每页20条内容,在参数start体现,利用列表推导式罗列出需要的列表(前200条评论)url = ['https://movie.douban.com/subject/1292052/comments?start=' + str(x) for x in range(0, 200, 20)]comment = ''for l in url:l += '&limit=20&status=P&sort=new_score'text = getHtml(l)comment += getComment(text)return comment

4、完整的代码

'''
主题:电影画像
作者:COS0度
时间:2021年7月10日
版本:1.0
'''import requests
from bs4 import BeautifulSoup
import jieba
import wordcloud
from imageio import imreaddef getHtml(url):  #固定格式,获取html文件headers = {'cookie': '__utmv=30149280.14247; _vwo_uuid_v2=D3556343CE2E9E566DF0C05A58AF2A096|1d52e48c7db254bf3507b77fb1dd0501; douban-profile-remind=1; viewed="3354490"; gr_user_id=36a9716a-5535-4142-9f17-98e3be67d379; __gads=ID=74f8b061d649d634-22085b49d8c700ee:T=1620293559:RT=1620293559:R:S=ALNI_MZvBMW7P41O7IT9NEROcocj39LBdw; UM_distinctid=1794105a1162-0655bea5a2d0ba-3e604809-144000-1794105a11774; ll="118168"; bid=eprWYq_M_1M; __utma=30149280.352782848.1599137845.1625878048.1625886682.11; __utmc=30149280; __utmz=30149280.1625886682.11.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ap_v=0,6.0; __utmb=30149280.2.10.1625886682','referer': 'https://movie.douban.com/subject/1292052/reviews?','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}try:r = requests.get(url, headers = headers)# 获取状态码,如果不是则200报错r.raise_for_status()# 修改编码为文本解析的编码格式r.encoding = 'utf-8'# 返回文本return r.textexcept:print('网络状态错误')def getComment(text):soup = BeautifulSoup(text, 'html.parser')ls = soup.find_all('span', class_="short")comment = ''for l in ls:comment += l.stringreturn commentdef allComment():# 观察网址,每页20条内容,在参数start体现,利用列表推导式罗列出需要的列表(前200条评论)url = ['https://movie.douban.com/subject/1292052/comments?start=' + str(x) for x in range(0, 200, 20)]comment = ''for l in url:l += '&limit=20&status=P&sort=new_score'text = getHtml(l)comment += getComment(text)return commentdef draw():# comment变量是所有评论,用allComment函数获取comment = allComment()# 创建字典D,用于分词并统计D = {}for word in jieba.lcut(comment):if len(word) >= 2:D[word] = D.get(word, 0) + 1# 创建字典d,d = {}for i in D.keys():if D[i] > 1:d[i] = D[i]mk = imread('自由.jpg')image_colors = wordcloud.ImageColorGenerator(mk)w = wordcloud.WordCloud(font_path='msyh.ttc', mask=mk, background_color='white',color_func=image_colors)w.generate_from_frequencies(d)w.to_file('outfile.png')if __name__ == '__main__':draw()

电影评论画像制作(豆瓣肖申克的救赎为例)相关推荐

  1. 改变我一生的电影——《肖申克的救赎》

    <肖申克的救赎>(Shawshank Redemption)是我所看过令人震撼的电影之一.故事与其说讲述的是主人公安迪成功越狱.重获自由,倒不如说是安迪从灵魂到肉体获得拯救的过程.在我看来 ...

  2. 电影《肖申克的救赎》给你最深的感受是什么?

    作者:让老衲玷污你 链接:https://www.zhihu.com/question/19601594/answer/26116852 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 肖申克 ...

  3. 看电影-《肖申克的救赎》

        1949年春天的一个下午,在美国新英格兰州的监狱肖申克里.修缮完了监狱车牌厂的屋顶后,犯人们聚在屋顶,喝着狱警提供的冰啤酒,享受着五月舒服的黄昏浴.他们都很开心,而这绝无仅有的"恩赐 ...

  4. 《肖申克的救赎》电影观后感

    以前总是在一些地方或多或少的看到肖申克救赎的字眼,当时可能并不知道这是一部电影(或者说不知道这是一部如此深刻的电影)吧.看完了引发了我的一些思考,安迪的才华深深的打动了我,所以也让我体会到学习的重要性 ...

  5. 肖申克的救赎(技术文章,非电影)

    这里填写标题 1. 肖申克的救赎 1.1. docker hub 加速器 1.2. What do you know about it 1. 肖申克的救赎 1.1. docker hub 加速器 ht ...

  6. 对于《肖申克的救赎》的个人感悟

    20世纪40年代末,年轻有为的银行家安迪的妻子出轨了.他很气愤,喝了一些酒,上好了子弹,想吓吓他们.但他的理智还是战胜了他一时的疯狂,安迪还是把枪丢入了黄家河.巧合的是那晚有人(后面通过汤米(安迪在狱 ...

  7. 《肖申克的救赎》到底救赎了什么?谁在救赎?

    以下内容转载自 https://www.toutiao.com/i6715361406847287819/ 为什么安迪挖通了隧道,八年后才开始越狱? 1/5.得救之道,尽在其中 <肖申克的救赎& ...

  8. 小说《肖申克的救赎》的优秀读后感2600字

    小说<肖申克的救赎>的优秀读后感2600字: <肖申克的救赎>是美国著名作家史蒂芬·金所著<different seasons>中春天的故事(本书中有:春天的希望: ...

  9. 肖申克的救赎(转贴)

    Fear can hold you prisoner. Hope can set you free.片名:肖申克的救赎 英文名:The Shawshank Redemption 导演:弗兰克·德拉邦特 ...

  10. 《肖申克的救赎》(又译:刺激1995)

    [曰]第一次看这部影片应该是在4年以前了,之后看了许多电影,但唯独这一部一直印在脑海中,占据我记忆的一角,或许是主人公卓越的才能,那种永不放弃的精神,在极其艰难的环境中永远追求那一线的希望深深的打动了 ...

最新文章

  1. CSS:link标签rel和media的解释(转)
  2. 接口自动化框架(java)--2.接口用例POST请求,参数配置
  3. 【编译原理】关于文法形式化定义的探索
  4. ASP.NET MVC上传图片前后台内容
  5. SpringBoot整合分布式消息平台Pulsar
  6. python qt开发_Python 使用Qt进行开发(三)
  7. 【今日CS 视觉论文速览】Thu, 13 Dec 2018
  8. 一文看懂 9 种Transformer结构!
  9. window10耳机插入没有声音,电脑里没有Realtek 高清晰音频管理器解决方法
  10. 论文阅读:Face-Mic: Inferring Live Speech and Speaker Identity via Subtle Facial Dynamics Captured by
  11. Codeforces - 1102F - Elongated Matrix(建图 + 哈密顿通路)
  12. 咻商跨境电商获悉报告指广州深圳跨境电商运营人才需求激增
  13. 儿童护眼灯怎么选?国家质检合格的儿童护眼灯
  14. JavaScript(第三天)—爱创课堂专业前端培训
  15. 基于stm32的grbl写字机器人(添加舵机支持)
  16. Catalan number (卡兰特数)
  17. java 批量打印_用java怎样实现批量打印
  18. 洛谷 10月 csp-s 模拟赛 T1,T2解析及代码
  19. piaget读法_罗读音【罗读音英语头条】- 罗读音知识点 - 中企动力
  20. 基于Web的小型购书网站

热门文章

  1. GIS空间分析(四)—— 空间分布类型
  2. python爬虫 点击下一页,总结python爬虫抓站的实用技巧 python爬虫怎么获取下一页的url...
  3. tr命令解析_学习笔记
  4. 魔法门之英雄无敌3 android,魔法门之英雄无敌3 v0.86.04
  5. MySQL--通过mysqladmin命令修改密码提示:single quotes were not trimmed line client(Windows)
  6. 波士顿法律第一至五季/全集Boston Legal迅雷下载
  7. Wamp5出现的问题
  8. 用PPO玩2048游戏--可以达到合成2048的目的
  9. 微信开发者工具通过二维码编译步骤
  10. 坑爹的360漏洞修补造成win7黑屏