Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析

个人希望,通过这个完整的爬虫案例(预计总共4篇短文),能够让爬虫小白学会怎么做爬虫的开发,所以在高手们看来,会有很多浅显的废话,如果觉得啰嗦,可以跳过一些内容~

上一篇文章给大家简单介绍了Python做爬虫所需要的环境、豆瓣影评分析的步骤以及豆瓣影评分析报告。本文将介绍制作影评分析的第一步:网页分析。以往的教程通常会忽略这一步,直接告诉怎么做,我希望多分享一些,便于大家尽快熟悉怎么从网页上爬数据。

以往我们做得比较多的分析,基础数据一般来自于企业内部的数据库所存储数据(通常我们称之为结构化数据),或者是来自于手工文档存储的有一定格式的数据文件(通常称之为半结构化数据)。而今天我们要做的数据分析,数据基础来自于网页数据,可以认为其是非结构化数据。非结构化数据的采集,和前两者的区别在于,你需要从一堆看似无规律的数据中找出有规律的数据,然后再按照需求来处理。

回到起点,我们要对豆瓣影评进行分析,豆瓣影评所涉及的网页有许多,每页上的文字及图片更是数不胜数。怎么才能让大数据分析报告更有针对性、更准确呢?难道真要从大海里捞一堆垃圾,然后再从垃圾中寻找出规律么?

过往的工作经历,告诉我,这么瞎干的话,是要累死人不赔命的。静下心来理一理工作思路。还是和以前一样,先理个大的步骤出来:

报表需求数据统计数据需求豆瓣模块网页分析

按顺序走就好了,和以前做项目区别不大嘛~

报表需求:如前文所述,我们需要展现的报表包括电影评分排名表、分区域电影热度表、电影热度(评论数量)排名表、电影词频分析表;

数据统计:电影评分、电影热度、分区域电影热度、电影评论

数据需求:电影名称、电影ID、电影评分、电影评论数、电影评论文字、电影区域。当然你还可以拿其他的一些数据备用,比如导演、演员、上映时间、片长等等。

OK,搞清楚数据需求,下一步要做的就是对豆瓣网电影模块进行分析,在哪里可以拿到我们所需要的数据。

限于数据要求,我们本次就只对正在热映的电影数据进行抓取和分析。网页路径为:豆瓣电影首页——>全部正在热映(https://movie.douban.com/cinema/nowplaying/chengdu/,我在成都,所以系统默认是成都目前热映的电影页面,就是它了)。就下面这个页面。

接下来,是到了分析网页数据的时候了。在刚才的网页页面上,按下“F12”键,进入该网页的开发者工具部分,其实就是形成网页的元素及代码。相信做过网页前端的朋友都清楚,没做过的也没关系,在网上找找资料看一看就明白,这儿就不展开来说了。

开发者工具——>调试程序,你看到的就是网页源码,如下图:

现在我们开始查找我们要的数据。举个例子更容易懂些,比如网页上的电影名称“狂暴巨兽”,我们需要看看如何在网页中找到。在开发者工具的右上角输入“

狂暴巨兽

”,然后回车查找,看到如下信息:

大家有点明白没?正在热映的电影《狂暴巨兽》,在网页背后的信息(姑且这么理解哈)就是这样存起来的。关于HTML页面的结构和语言,本文就不详细阐述了,有兴趣的朋友可以自行研究哈。下面将尽可能的用小白文而不是IT语言,把我们要抓取的内容所涉及的内容给阐述清除,做过Web前端的朋友应该可以直接忽略这一段了。

我们所看到的Web页面,其背后是由多层容器嵌套而成,你可以想象成超市里买的组合装保鲜盒,大的套小的,小的再套小的,每个容器里装的就是我们在网页上看到的内容。容器有个官方名称叫“标签”(英文tag)。上图看到的《头号玩家》的信息,包括演员啦、导演啦、地区啦等等,都是被装在

...

这个标签中的。对了,通常标签会是成双成对出现,有开始有结束,比如也可以写成简化版的

。只要通过开始结束标签,你就能很容易分清楚容器包含的内容。记住咯,容器是可以嵌套的,里三层外三层,我们要做的就是通过抽丝剥茧,将需要的数据给扒拉出来。

OK,找到最底层数据了,开始向外扒拉:

1、在

标签外面,是

标签,该标签有一个属性“class='lists'”,记住了,后续我们的程序会用到的哈~

2、继续往外扒拉,是属性为“class='mod-bd'”的div标签

3、继续往外扒拉,依然是div标签,只是属性变成了“id='nowplaying'”,这个单词熟悉不?好像是“正在上映”哦,哈哈,得来完全不费工夫啊

4、额外还得提一个,就是图下方的href='...',那就是每部电影详细信息的链接地址,这个也要扒拉下来,就靠它在程序里进到下一步处理咯

在开发者工具,滚动条往下拉一拉,另一部电影《头号玩家》的信息也出来了。

继续往下拉,一部一部电影都出来了,是不是看起来特别像我们熟悉的结构化数据了啊,电影ID、电影名、评分、上映时间、片长、地区、导演、演员、点评数、地址等等。我们把一部部电影的数据存起来,是不是就是我们熟悉的关系型数据模型了呢。终于回到我们熟悉的情景了。

看明白没?没明白倒回去再瞅瞅,看明白了我们往下吧。。。刚才只是看到了电影的基础信息,我们最想要的评论还没看到呢,评论在哪里呢?在网页上点击电影缩略图,会跳转到电影详细页面,其实呢,网址就是上面扒拉下来的href啦。往下啦,看到我们需要的评论了。。。

继续上一个页面的动作,一言不合就按F12键。。。以后你们会上瘾的,打开网页就想按F12键。。。一样的,在查询栏输入“全部 5884 条”,记得数字前后有空格,不然查不到的。

找到了吧,记住其前后的标签哈。大家多尝试,我就不一个一个列了。下一步是找到影迷对电影的评论了。点击“更多短评”,跳到详细评论页面:

详细评论每页只有20条,所以要获得更多的评论,需要翻页啦。怎么在程序里实现翻页?请点击“后一页”,跳转后仔细看IE地址栏中的地址:https://movie.douban.com/subject/26430636/comments?start=20&limit=20&sort=new_score&status=P&percent_type=,中间的start=20以及limit=20,就是从第20条开始,每页显示20条,明白了么?未来在程序中,你需要自动改变start的数字来打开详细评论网页。

下一步,继续获取评论数据,依然是F12,没创意。网页上找个影迷的昵称,输入查找,看到了评论数据所在的位置和标签。

OK,我们已经把我们想要的数据都找到了,大家学会了怎么在网页上找自己想要的内容了么?不光是豆瓣哦,其他网站也可以的,比如看小说的网站,先把所有小说扒拉下来再慢慢看,甚至于电影,你都可以的。当然,涉及版权的问题,大家要注意的哈;涉及肾的问题,大家就自己保重了哈~

今天我们主要就讲了怎么样获取数据需求,并手工去扒拉所需数据信息,流程像不像以前我们做企业管理报表的数据需求及满足度分析啊?大家很多时候可以触类旁通的。下一篇,我给大家讲解在Python中,怎么样获取、分析并读取网页上所需的数据。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180416G13WPL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券