豆瓣超高评分《你好,火焰蓝》热评生成精美词云!!!

简介: 豆瓣超高评分《你好,火焰蓝》热评生成精美词云!!!

结果展示

目录详情

网页分析

发送请求

热评分析

完整代码

精美词云

网页分析

我们打开豆瓣短评,找到我们所要获取电影的短评列表。

网页F12打开浏览器开发者模式,找到如下

发送请求的真实链接:

数据是存储在一个json的数据集合里面的。

我们使用浏览器插件打开

我们要获取的图片信息都是在一个叫做html的列表里面。

老规矩,先获取json数据集。

 

发送请求

  url = f'https://movie.douban.com/subject/35231076/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'
 
  headers = {
            'Cookie': 'll="118375"; bid=-0vQx1zNf9g; __utmc=30149280; __utmz=30149280.1626393826.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1626393826.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _vwo_uuid_v2=D3D09D476AD97DE25492B13E46DCC0FF0|b7ddbeee10c323627b2a1ed1fce3b44b; __gads=ID=a11b92658502a109-22900c2a5bca007e:T=1626393873:RT=1626393873:S=ALNI_MZbuKNW-xrOqCRLWhABJ0mmTU92Mg; __yadk_uid=UpfAkPPZNmGCYlDjV2D7pGcAJqNOLEcZ; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1626404180%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DtJ1wg7vbDM0tTcX_Blaz4Lokg24OTHJBYQXr-FPRas3CxkEMFvoM9H2cFY3nMJuK%26wd%3D%26eqid%3Ddd97e590000679a10000000560f0ccdd%22%5D; _pk_ses.100001.4cf6=*; ap_v=0,6.0; __utma=30149280.1997475757.1626393826.1626393826.1626404180.2; __utmb=30149280.0.10.1626404180; __utma=223695111.51408786.1626393826.1626393826.1626404180.2; __utmb=223695111.0.10.1626404180; _pk_id.100001.4cf6=8e1ed7625dcefcf1.1626393826.2.1626404198.1626396404.',
            f'Referer': f'https://movie.douban.com/subject/35231076/comments?start={(page-1)*20}&limit=20&status=P&sort=new_score',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4503.5 Safari/537.36'
        }
  resp = requests.get(url, headers=headers)
  if resp.status_code == requests.codes.ok:
    text = resp.json()['html']
    print(text)
 

成功获取到浏览器响应之后我们接下来获取每一部电影的评分作者、评分时间、评分和评论

# 获取当前页面所有的div列表
  div_list = html_data.xpath("//div[@class='comment-item ']")
 
  for div in div_list:
      # 姓名
      cmt_name = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/a/text()")
      cmt_names = ''.join(cmt_name).strip()
 
      # 评论时间
      cmt_time = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[@class='comment-time ']/text()")
      cmt_times = ''.join(cmt_time).strip()
 
      # 星评
      star = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[2]/@title")
      stars = ''.join(star).strip()
 
      # 评论内容
      comment = div.xpath("./div[@class='comment']/p[@class=' comment-content']/span[@class='short']/text()")
      comments = ''.join(comment).strip()
 
      count += 1
 
      time.sleep(random.random()*3)
      print(cmt_names, cmt_times, stars, comments)

数据提取如下:

李不秃. 2021-07-08 较差 我的天,这糟糕的演技和剧情,披着职业皮谈恋爱,一切为谈恋爱服务,工业糖精胡撒一气,这才第一集就看不下去了,才第一集哎,就忙着铺感情线了
土豆不见了 2021-07-08 推荐 救援场面看的很揪心,日常生活拍的很有趣,于是看的很上头,节奏再紧凑些就更加完美啦
冩潢の夢支棱!2021-07-08 力荐 25min,至少国内多一部消防战士为主角的剧还挺好的,我之前印象中没看到过几部,电影倒是有的,成品质量还是有很多很多可以改进的地方啦,比如坐在急救车里,却一点没有生死时速的移动感,比如隧道现场,一开始还对烟雾做了防备,结果深入现场后大家都跟没有烟雾一样,居然还在现场附近接生……这……不过我真的没有专业知识,大概会有专业的知识科普号来科普吧
丸皮 2021-07-08 还行 编剧不行……剧情和对话都太悬浮了……强行安排孕妇十秒钟生娃,更是没必要………啊!多好的题材啊!而且是原声!痛心…………祈祷俊子以后多接好剧!
一个康波的游戏 2021-07-08 力荐 剧本还行,没翻车,能看下去
琼葩 2021-07-08 推荐 咦?喜欢的男女主角搭戏了,突然拥有了海景房???
7.8虽然对男女主都有好感,但是自从知道男主女主名字之后就没期待过,竟然意外的还可以!剧情紧凑,救援场景真实,每对cp都挺甜,没有一个讨厌的角色,可以可以,就是男主再练练台词就好了。
Joyce0129 2021-07-09 力荐 本来以为是职业剧+甜宠剧,4集看完没想到是个喜剧,消防员日常打打闹闹太有趣了,有血有肉的日常场景更能全面展现消防员这个职业,救援场景也能看出来尽量还原了。目前来看男女主人设也都是直球型没有那么多误会和蒙在鼓里没办法相认的情节,适合ibg的看。剧情节奏很快,每集一个消防小知识也挺有趣的,剧荒打发时间看一看还是不错的。
彩虹海 2021-07-08 力荐 我宣布霍言和晏蓝就是坠坠坠坠吊的!!!好甜好甜好甜想嗑真人了……
TOB 2021-07-08 很差 本来不想发表评价的,但天天都挂在热搜上,没忍住点进去看了第一集,只能说本质偶像剧,这剧情真的不能说是对消防员的致敬。。。男女主演技也很堪忧。。。男主台词也太差了。。国内什么时候能拍一部真正的职业剧,我们普通观众真是吃了太多苦了【叹气】
孔鯉 2021-07-08 很差 把这片子拍成这样是对广大消防指战员的侮辱
Sugar 2021-07-09 力荐 一开始没报什么期望的,但后来看了几集之后觉得还挺甜的,节奏蛮快的,然后剧情也有我的苏点和爽点,蛮不错的。
豆友 2021-07-08 还行 其实也还好,毕竟消防这些也比较难拍,龚俊演技还是有的,蛮喜欢那种自然的演技。(但龚俊颜值还没有特别get到),女主不认识,也还行。但剧情看的其实还是稍微有点尴尬。
出来喝奶茶- 2021-07-09 力荐 刚把更新的4集看完,说说这剧吧,消医联动的题材吸引了我,再加上最近总是听见的龚俊这个名字,4集的剧情很紧凑不拖沓,有紧张,有搞笑,比预想中要好很多。不得不说龚俊的眼神戏真的很到位,和张慧雯的互动也很有爱,第一集含泪敬礼那里真的有被感动到,期待之后剧情的发展。

多页

多页数据分析的时候最简单的方法就是观察并分析多页连接的区别,如下:

https://movie.douban.com/subject/35231076/comments?percent_type=&start=20&limit=20&status=P&sort=new_score&comments_only=1
 
https://movie.douban.com/subject/35231076/comments?percent_type=&start=40&limit=20&status=P&sort=new_score&comments_only=1
 
https://movie.douban.com/subject/35231076/comments?percent_type=&start=60&limit=20&status=P&sort=new_score&comments_only=1

观察此链接除了start参数之外都没有变化,其实这个start参数就是控制翻页的。

它的变化规律就是(page-1)*20,据此我们可以构造出它的请求链接

url = f'https://movie.douban.com/subject/35231076/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'

接下来我们就可以获取多页数据啦

# 多页抓取
for page in range(1, 10 + 1):
    print(f'-----------------正在抓取第{page}页影评-----------------')
    url = f'https://movie.douban.com/subject/35231076/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'
    .......
 

数据存储

我们将获取到的数据存储到本地的excel之中,之前我有专门拉出来详细讲过,有兴趣的小伙伴可以参考

我是如何把python获取到的数据写入Excel的?

我们这里使用的是第一种,使用openpyxl来保存数据

 # 创建workbook
  ws = op.Workbook()
  # 创建worksheet
  wb = ws.create_sheet(index=0)
 
  # 创建表头
  wb.cell(row=1, column=1, value='名称')
  wb.cell(row=1, column=2, value='评价')
  wb.cell(row=1, column=3, value='时间')
  wb.cell(row=1, column=4, value='评论')
  
  # 保存数据
  wb.cell(row=count, column=1, value=cmt_names)
  wb.cell(row=count, column=2, value=cmt_times)
  wb.cell(row=count, column=3, value=stars)
  wb.cell(row=count, column=4, value=comments)
  
  # 保存文件
  ws.save('你好,火焰蓝短评.xlsx')
 

词云展示

为了更加直观的展示电影所述,我一般都是使用词云来做直观的展示。

我们使用的是stylecloud。

使用pandas来读取我们刚才保存的数据。

使用jieba来切割分词

使用stopwords来设置停用词

  rcv_data = pd.read_excel('你好,火焰蓝短评.xlsx')
  c_title = rcv_data['评论'].tolist()
  #观影评论词云图
  wordlist = jieba.cut(''.join(c_title))
  result = ' '.join(wordlist)
  pic = 'img1.jpg'
  gen_stylecloud(text=result,
                  icon_name="fab fa-apple",
                  font_path='msyh.ttc',
                  background_color="white",
                  output_name=pic,
                  custom_stopwords= ['了', '的', '是', '也']
                   )
  print('绘图成功!')
 


最终效果展示如下:

我就不在此做其他项的可视化分析了,反正数据已经给你们了对吧

有问题的小伙伴们欢迎下方留言讨论哈~

相关文章
|
文字识别
文字识别OCR常见问题之拦截扫描件的识别如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
539 2
|
SQL 搜索推荐 分布式数据库
用户画像建设
用户画像建设
566 0
|
人工智能 数据挖掘 API
AutoGen完整教程和加载本地LLM示例
Autogen是一个卓越的人工智能系统,它可以创建多个人工智能代理,这些代理能够协作完成任务,包括自动生成代码,并有效地执行任务。
1576 0
|
Java 数据库
Springboot 多数据源动态切换 以AOP切点方式实现
Springboot 多数据源动态切换 以AOP切点方式实现
727 0
Springboot 多数据源动态切换 以AOP切点方式实现
|
7月前
|
数据安全/隐私保护 计算机视觉 Python
人脸识别图片眨眼生成器,手机制作人脸眨眼张嘴, 代替真人刷脸软件
代码实现了基于面部特征点的人脸动画生成,包括眨眼和张嘴动作。它使用dlib进行人脸检测和特征点定位
|
5月前
|
算法 API 数据安全/隐私保护
深度解析京东图片搜索API:从图像识别到商品匹配的算法实践
京东图片搜索API基于图像识别技术,支持通过上传图片或图片URL搜索相似商品,提供智能匹配、结果筛选、分页查询等功能。适用于比价、竞品分析、推荐系统等场景。支持Python等开发语言,提供详细请求示例与文档。
Next.js 实战 (二):搭建 Layouts 基础排版布局
本文介绍了作者在Next.js v15.x版本发布后,对一个旧项目的重构过程。文章详细说明了项目开发规范配置、UI组件库选择(最终选择了Ant-Design)、以及使用Ant Design的Layout组件实现中后台布局的方法。文末展示了布局的初步效果,并提供了GitHub仓库链接供读者参考学习。
469 1
Next.js 实战 (二):搭建 Layouts 基础排版布局
|
前端开发 JavaScript API
前端开发的秘密花园:这些技巧让你轻松应对各种浏览器兼容性问题!
【10月更文挑战第31天】前端开发是一个充满创意与挑战的领域,追求极致用户体验的同时,浏览器兼容性问题却时常阻碍我们前进。本文将介绍几种解决浏览器兼容性的最佳实践:使用CSS前缀、Autoprefixer工具、现代JavaScript特性与Babel转译、Polyfill与Feature Detection、响应式设计以及跨域问题处理。掌握这些技巧,助你轻松应对各种兼容性难题,创建更稳定、用户友好的网页应用。
343 3
|
机器学习/深度学习 人工智能 供应链
精准农业:AI在农业生产中的应用
【10月更文挑战第1天】随着科技的发展,人工智能(AI)逐渐渗透到农业领域,通过精准监控和管理提升了农业生产效率和质量。AI在精准农业中的应用包括:精准农田管理,如个性化灌溉和施肥;作物病虫害识别与预测,及时发现并预防病虫害;智能农机自动化作业,提高作业效率;农产品质量检测与分类,确保品质;农业供应链优化,预测需求和价格。尽管面临数据收集、技术接受度等挑战,AI在精准农业中的未来前景广阔,有望实现全程自动化作业、数据驱动决策及智能预警系统,推动农业可持续发展。
968 11
|
Kubernetes Java 开发工具
Kubernetes部署项目流程(新手上线新版本服务整个流程)
【8月更文挑战第1天】Kubernetes(k8s)新手上线新版本服务整个流程
570 5