文章目录

  • 导语
  • 首先,打开豆瓣,查看豆瓣评论入口
  • 根据抓包分析结果,写Java爬虫代码
  • 【庆余年】豆瓣评论分析
    • 1. 【庆余年】电视剧爱奇艺热度排行榜
    • 2. 【庆余年】豆瓣短评评论分布
    • 3. 【庆余年】豆瓣各种评论数排行分布
    • 4. 【庆余年】豆瓣各类评论投票数总和分布
    • 5. 【庆余年】豆瓣最热投票评论前20条
    • 6. 【庆余年】电视热播度随日期变化情况
    • 7. 【庆余年】关键词词云
  • 总结
  • 写在最后

导语


【庆余年】这部电视,从11月份播出到现在,以迅雷不及掩耳之势崛起,迅速霸占电视剧热度头条,随着第一季的结束,基本剧情已经被大部分电视迷所熟知了,不可否认,这部电视的确是一部构思独特的故事。

一开始,大家都认为是穿越剧的题材,演绎到最后,竟然是科幻片的经典,的确令人所料不及,很多看过书的小说迷(据说这部小说热度也很高),一直在剧透。

  • 五竹是机器人?
  • 陈萍萍的椅子里面有散弹枪?
  • 范闲的母亲给他留下了一把98K(狙击枪)?

各种评论,剧透,灌水无疑给这部电影带来了疯狂的人气效应!作者猫腻,估计也吸粉无数了。

但是,小编一直认为这部电视,编剧很烂,剧情很浮夸,演技不够精湛,人员关系也错乱不堪,为什么还这么火?到底电视迷是夸的多呢,还是骂的多呢,为了了解实际情况。今天,我就用Java爬虫写了一个爬虫,爬取了爱奇艺和豆瓣电视的热度及评论,分析一下,看看结果,也让大家做个见证,这部电影,到底是好是坏。

好了,话不多说,我们开始写Java爬虫代码,具体分析!

首先,打开豆瓣,查看豆瓣评论入口


打开豆瓣(https://movie.douban.com/subject/25853071/comments?sort=new_score&status=P),可以看到,豆瓣中 有一个评论的页面,到现在为止,总共记载了40220条短评数据,当然,这些评论的数据,是根据网友投票数来排序的。

使用抓包工具,可以看到,每次评论翻页,会调用接口:

https://movie.douban.com/subject/25853071/comments?start=20&limit=20&sort=new_score&status=P

接口里面,只是start的参数不同,其余都是一样的。

请求后,返回的结果是JSON串,里面封装了HTML代码:

从分析来看,对这个接口,一直循环,就可以把所有的评论得到。

根据抓包分析结果,写Java爬虫代码

根据抓包的结果,只需要循环调用GET接口就可以得到所有的评论数据,那么下一步就开始写爬虫代码。

//获取列表的方法
public boolean getList(String ip ,int port, int page, SqlSession session) {boolean rets = false;//初始化HttpClientDefaultHttpClient httpClient = HttpClientUtuils.handleNewHttpClient(120000, 120000) ;//预留代理接口if(ip!=null && !ip.equals("")){HttpHost proxy = new HttpHost(ip,port);httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);}String sg1 = "" ;HttpGet g1 = null;try {//GET请求豆瓣评论区g1 = new HttpGet("https://movie.douban.com/subject/25853071/comments?start="+(page*20)+"&limit=20&sort=new_score&status=P&comments_only=1") ;            g1.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36") ;HttpResponse response2 = httpClient.execute(g1);          sg1 = EntityUtils.toString(response2.getEntity(),"utf-8") ;      sg1 = StringRandomUtils.unicodeToString(sg1) ;//System.out.println(sg1);if(response2.getStatusLine().getStatusCode() == 200 && sg1.indexOf("{\"r\": 0") != -1 &&  sg1.indexOf("<div class=\\\"comment-item\\\"") != -1 ){//遍历结果得到评论数据while(sg1.indexOf("<div class=\\\"comment-item\\\"") != -1) {String comentId = "" ;String comentPersonId = "" ;int votes = 0 ;String comentPersonName = "" ;String comentLevel = "" ;String comentDate = "" ;String comments = "" ;sg1 = sg1.substring(sg1.indexOf("<div class=\\\"comment-item\\\"") + 4) ;sg1 = sg1.substring(sg1.indexOf("data-cid=") + 4) ;sg1 = sg1.substring(sg1.indexOf("\"") + 1) ;comentId = sg1.substring(0, sg1.indexOf("\\")).replace("\r", "").replace("\n", "").trim() ;comentId = EmojiFilter.filterEmoji(comentId);if(sg1.indexOf("<a title=") != -1) {sg1 = sg1.substring(sg1.indexOf("<a title=") + 4) ;sg1 = sg1.substring(sg1.indexOf("\"") + 1) ;comentPersonName = sg1.substring(0, sg1.indexOf("\\")).replace("\r", "").replace("\n", "").trim() ;comentPersonName = EmojiFilter.filterEmoji(comentPersonName);if(sg1.indexOf("href=\\\"https://www.douban.com/people/") != -1) {sg1 = sg1.substring(sg1.indexOf("people/") + 7) ;comentPersonId = sg1.substring(0, sg1.indexOf("/")).replace("\r", "").replace("\n", "").trim() ;}}if(sg1.indexOf("<span class=\\\"votes\\\">") != -1) {sg1 = sg1.substring(sg1.indexOf("<span class=\\\"votes\\\">") + 4) ;sg1 = sg1.substring(sg1.indexOf(">") + 1) ;String votestr =  sg1.substring(0, sg1.indexOf("<")).replace("\r", "").replace("\n", "").trim() ;try{votes = Integer.parseInt(votestr) ;}catch(Exception e){System.out.println(e.toString());}}if(sg1.indexOf("<span class=\\\"allstar") != -1) {sg1 = sg1.substring(sg1.indexOf("<span class=\\\"allstar") + 4) ;sg1 = sg1.substring(sg1.indexOf("title=\\\"") + 4) ;sg1 = sg1.substring(sg1.indexOf("\"") + 1) ;comentLevel = sg1.substring(0, sg1.indexOf("\\")).replace("\r", "").replace("\n", "").trim() ;}if(sg1.indexOf("<span class=\\\"comment-time \\\"") != -1) {sg1 = sg1.substring(sg1.indexOf("<span class=\\\"comment-time \\\"") + 4) ;sg1 = sg1.substring(sg1.indexOf("title=\\\"") + 4) ;sg1 = sg1.substring(sg1.indexOf("\"") + 1) ;comentDate = sg1.substring(0, sg1.indexOf("\\")).replace("\r", "").replace("\n", "").trim() ;}if(sg1.indexOf("<span class=\\\"short\\\">") != -1) {sg1 = sg1.substring(sg1.indexOf("<span class=\\\"short\\\">") + 4) ;sg1 = sg1.substring(sg1.indexOf(">") + 1) ;comments = sg1.substring(0, sg1.indexOf("<")).replace("\r", "").replace("\n", "").trim() ;comments = EmojiFilter.filterEmoji(comments);}//打印结果System.out.println(comentId + "--" + comentPersonId + "--" + comentPersonName+ "--" + votes + "--" + comentLevel + "--" + comentDate + "--" + comments);}}else{System.out.println("请求失败");Thread.sleep(60000);getList(ip ,port,  page,  session) ;}rets = true;}catch(Exception e){System.out.println(e.toString());e.printStackTrace() ;rets = false;}finally{//关闭httpclient
//          if(httpClient !=null){
//              httpClient.getConnectionManager().shutdown();
//          }}sg1 = null ;return rets;}

结果,程序抓包运行到11页的时候发现,后面的数据,竟然无法抓取了,总共抓取了220条数据。好吧,可能豆瓣也对爬虫做了限制措施。既然无法爬取到所有的数据,那就对着200多条数据,做一个分析。

【庆余年】豆瓣评论分析

分析使用图表和词云方式展示。

1. 【庆余年】电视剧爱奇艺热度排行榜


从爱奇艺的热度排行榜来看,【庆余年】以8715分热度,排名第一,下面接着是【精英律师】和【剑王朝】,热度榜中,我是更为喜欢【剑王朝】一些,虽然它的热度不如【庆余年】。
.

2. 【庆余年】豆瓣短评评论分布


豆瓣评论中,庆余年的好评率达到73%,差评,仅仅16%,一般11%,可见,大部分人对庆余年的评论,还是偏向于积极方向的,不过这个数据,有些片面,毕竟,这只是人数比,不能完全说明情况。下面我们继续分析。
.

3. 【庆余年】豆瓣各种评论数排行分布


这个评论数据,是针对我们抓取的结果进行的分析,200多条数据中,有104条评论显示,很差,有70多条数据显示较差!
从这里可以看到,【庆余年】的口碑好似很差,80%以上的有效评论,竟然都是负面评论,终于,数据揭开了人气效应背后的真相!电视的质量,真的如此不堪?
不过不要着急,我们继续看其他分析结果。

4. 【庆余年】豆瓣各类评论投票数总和分布


大家都知道,豆瓣是可以投票的,那我就对投票的总数做了一个分析!
但是从数据分析,我竟然看到了一个和评论数不一样的结果,评论数显示,大部分是差评,然而投票数,推荐(4星)却遥遥居榜首,力荐(5星)居榜3位!
其实,从这里,大概可以看出,这部电视,虽然骂的人很多,但是挺的人也不少!
.

5. 【庆余年】豆瓣最热投票评论前20条

那就看看评论的前20,都说了一些什么?

  • 评论第一名,是一位叫做 红骷髅 的豆瓣用户评论的,内容是:达康书记的脸配上陈萍萍的名字,有种莫名的喜感。 这个评论,比较中肯(哈哈,貌似没有说错了),属于推荐指数!
  • 评论第二名,是一位叫做 -Alice的豆瓣用户评论的,内容是:带着镣铐能把舞跳这么好我是很服的,开头的穿越设定很惊艳,第一集这个还原度真心没得说,小范闲人畜无害的笑我可太喜欢了,必须五星好评走起来,等一手我最爱的大东山之战~
  • 从评论前20来看,有13个评论属于推荐级别,有5个评论,属于贬低内容的,但总体来看,推荐的指数, 还是远远高于贬低指数。

6. 【庆余年】电视热播度随日期变化情况

下面看看,从11月26号以来,电影的评论热度。

  • 大概可以看到,11月26号,热度很高,98个评论,后面的评论数,就越来越低了,可能是我拿到数据太少的问题,这里只能做一个参考。

7. 【庆余年】关键词词云

最后,对【庆余年】这部电视,评论的关键词做了一个词云,看看大家都是怎么说的吧!

  • 从词云上来看,陈道明是这部电视的一个魂,很多人,估计就是奔着这个演员去的
  • 内容貌似有褒有贬,说法不一!
  • 但是无疑,猫腻作者火了

总结

从Java爬虫抓包得到的数据,大概是了解了【庆余年】基本的状况。当然,这部电视,也有值得夸奖的地方,但是也有不足的地方,从网络评论来看,也是褒贬不一,没有一个统一的说法。但是从舆论造势来看,这是一部成功的作品,它已经很完美的引起了大家的注意,获取了足够的热度。当然,希望猫腻作者不急不躁,能继续给我们带来更好的作品!

写在最后

Java爬虫作为一个分析工具,的确很有效,有会Java,喜欢爬虫的朋友,可以加我的微信公众号,上面有Java爬虫入门的一些教程,欢迎关注啊!公众号:Java爬虫之家。

从零入门学Java爬虫,希望你喜欢!

庆余年“真的”被大家喜欢吗?Java爬虫分析告诉你结果相关推荐

  1. java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码

    原创 野狗菌 希望你能喜欢 今天 关于本文: 本文介绍一个简单Java爬虫,获取网页源码,爬取电话号码. 本篇教程用我的博客一个测试网页演示. --野狗菌[希望你能喜欢] 测试页面: https:// ...

  2. python爬虫与java爬虫的区别_java爬虫(一)主流爬虫框架的基本介绍

    (1).Scrapy: Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测 ...

  3. 运用java爬虫和python做词云图

    前言: 最近有点时间,就写个东西玩玩,就是分析电影评论做成词云图.这次没有采用python去爬取电影评论,而是采用了java中的多线程和线程池去爬取电影评论,但是用评论做词云图使用python写的.如 ...

  4. Java爬虫初学——爬取BT电影天堂电影的磁力链接并筛选下载

    最近和朋友们一起看悬疑电影,会百度了解信息并把想看的电影写在记事本中,突然萌生了一个想法,能不能写一个简单的程序每次自动下载记事本中想看的电影.因此用了一个下午和一个晚上的时间学习和编写了一个简单的J ...

  5. java爬虫系列第二讲-爬取最新动作电影《海王》迅雷下载地址

    为什么80%的码农都做不了架构师?>>>    1. 目标 使用webmagic爬取动作电影列表信息 爬取电影**<海王>**详细信息[电影名称.电影迅雷下载地址列表] ...

  6. Java爬虫html解析-Jsoup(绿盟极光报告)

    java爬虫&html解析-Jsoup(绿盟极光报告) 一.类库选取 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup. 主要是实现的功能需求,选取Jsoup,对htm ...

  7. [完整爬虫]java爬虫基础对36Kr快讯数据进行爬取以及数据筛选过滤

    由于九月事件把爬虫推到风口浪尖 而我写这些只是分享技术 不涉及隐私等个人资料的获取 并且是在不会对对方服务器造成压力的情况下进行的爬取 特此声明 36Kr 也叫36氪,是一个我非常喜欢的网站,网罗天下 ...

  8. 我的第一个开源项目:Java爬虫爬取旧版正方教务系统课程表、成绩表

    Java爬虫爬取旧版正方教务系统课程表.成绩表 一.项目展示 1.正方教务系统 首页 2.爬虫系统 首页: 成绩查询: 课表查询: 二.项目实现 1.爬取思路描述 无论是成绩查询或课表查询亦或者其它的 ...

  9. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

最新文章

  1. 自然语言处理的现实应用
  2. CPSR和SPSR(转)
  3. java基础面试题:抽象类中是否可以有静态的main方法?
  4. js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记
  5. Web前端学习技巧有哪些?本文给你答案
  6. 音视频技术开发周刊 78期
  7. 剑指offer 二叉搜索树的后序遍历
  8. net的retrofit--WebApiClient库
  9. 浅谈项目开发现状(一)
  10. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)
  11. windows64位 时序数据库 TimescaleDB + postgresql 安装
  12. Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(5)
  13. js获取本周日期和上周日期 --- 随手记录备忘
  14. 7-3 单词首字母大写
  15. 解决电脑无法运行 Mscomctl.ocx控件 常见的4个问题
  16. 1U和2U服务器的优缺点对比
  17. BLINK-DataStream开发
  18. MAUI 第六天 使用MASA Blazor 处理界面相关问题
  19. linux下静态编译mupdf,在Qt中调用Mupdf库进行pdf显示
  20. 细微之处见真章之JSON格式美化

热门文章

  1. marquee 详解
  2. vb.net 教程 3-7 窗体编程 菜单和工具栏 4 ToolStrip 1
  3. ubuntu系统(八):ubuntu18.04双系统安装+ros安装+各种软件安装+深度学习环境配置全家桶
  4. java 最大递减数_华为机试题:最大递减数
  5. C++基础和STL(习题)
  6. 大咖养成记 一个拥有66万粉丝的自媒体
  7. VoNR无线覆盖能力研究
  8. mysql core dumped_core dumped
  9. 初试JAVA中心化钱包接入BTC,USDT
  10. 基因对静息态脑功能网络的影响