您当前的位置:主页 > www.13925.com >

用 Python 爬取 500 条豆瓣影评看看《蚁人2》是否有看点?

作者:admin     发布时间:2019-11-22 11:12 点击数:

  “不以大小论英雄。”《蚁人2》已热映多天,本文就来看看豆瓣电影上的这部片子评分如何,从代码和数据层面给出最客观的解读。

  作为练手,笔者本来打算把豆瓣上的短评爬下来作为分析的素材。然而并没有成功爬到所有的短评,一波三折,www.995999.com最终只爬到了500条,当然这也是豆瓣目前可见的最大数量。

  本文将细致分析爬虫的整个过程,并对爬到的数据加以分析,蚁小见大。整篇文章共包含数据爬取和文本分析两部分,因为爬到的数据包含信息较少,所以分析过程相对简单,包含描述统计分析、情感分析和分词词云。

  豆瓣上的影评分为两种,一种是长篇大论的影评,还有一种是短评,类似上图。这次爬虫的目标就是上图中红色框线中的短评,信息包括用户名、星级评价、日期、有用数、评论正文。

  虽说主页显示45576条,但其实可见的只有500条,每页是20条短评,多一条都不给,手动去点,点到25页之后就没有任何信息了。

  第一遍直接用Selenium去爬只爬到了200条,200条之后就自动停止了,后来检查了半天发现必须登录豆瓣上去才能看到更多的评论,然后又加了登陆的代码,之后尝试过程中登陆的次数太多又有了验证码,又加了一个手动输入验证码的部分,最终成功爬到了500条,因为之前没有处理过登陆相关的,所以折腾了很长时间,整体过程如下。

  登陆页面是豆瓣主页,并不是我们爬取的网站,所以首先通过Selenium模拟登陆之后,再获取蚁人2短评页面进行爬虫。

  通过Chrome开发者工具获得账户名、密码、验证码的位置、账户名和密码直接输入,验证码获取图片后先存到本地,打开后手动输入,输入之后关掉验证码图片,代码继续执行,就登录成功了,刚开始登的时候不需要验证码。

  登录之后,转到我们要爬的蚁人2短评页面。爬完一页之后,找到后页的位置click跳转到下一页继续爬,循环一直到最后一页。

  但最后一页的XPath不是这两个,因此可以通过循环的方式,第一页之后,只要//*[@id=paginator]/a[3]找得到,就跳转到下一页继续爬,直到找不到为止。

  具体爬的时候,用一个DataFrame来存所有的信息,一行为一个用户的所有数据,数据位置仍然通过开发者工具获得,细节不再赘述。

  调用以下两个函数爬取数据,其实对于豆瓣上别的电影影评,估计稍微改一改也可以爬了:

  情感分析做得比较简单,主要借助于snownlp包,对于评论的情感倾向进行评分,0-1之间,越正面的情感倾向对应的分值越高。不过根据官方说明,这里用到的模型是用购物评价数据训练出来的,用到这里可能误差会有些大, 姑且一试吧,感觉效果还可以。

  看上去正面评价基本都是高星级评分的观众给出的,有理有据,令人信服。再来看看负面评价:

  通过jieba进行分词,根基TF-IDF算法提取关键词,代码及部分关键词如下:

  从分词结果来看,彩蛋毫无疑问是是蚁人2中大家最关心的点。最后,以蚁人分词词云作为文章结尾!

关闭窗口