Python爬虫之豆瓣电影评论数据的爬取(十四)

一、 前言

豆瓣网是一家基于用户对于图书、电影和音乐兴趣而搭建的社交网站,由杨勃创立于2005年。豆瓣网推崇算法,根据用户对音乐、书、电影等进行的操作,自动给出同类趣味和友邻推荐。基于记录和分享而生成的“用户价值”是豆瓣的核心竞争力。豆瓣网的一大特色是不做运营,用户自发组建的小组是豆瓣特有的文化和社区产物。

爬取豆瓣网上面的电影评论数据具有很重要的作用。电影评论数据是NLP(自然语言处理)重要的数据。通过电影评论数据集可以进一步做中文分词、命名实体识别、关键词提取、句法分析、文本向量化、情感分析、舆情分析等进一步的数据处理和应用。既然数据这么重要,废话不多说,紧接着就开始电影数据的爬取。

二、 代码及结果分析展示

这次选取的实例电影是《我不是药神》:它是由文牧野执导,宁浩、徐峥共同监制的剧情片,徐峥、周一围、王传君、谭卓、章宇、杨新鸣等主演 。该片于2018年7月5日在中国上映。影片讲述了神油店老板程勇从一个交不起房租的男性保健品商贩,一跃成为印度仿制药“格列宁”独家代理商的故事,这里先放一张海报。  

紧接着查看《我不是药神》的豆瓣评论。还是老样子F12—>NetWork—>XHR,我们发现这里面竟然没有xhr文件,谢天谢地,这说明这些评论数据都不是通过Ajax来传送数据的。这样工作就简单太多了---------直接通过寻找URL的规律爬取每页的数据并保存 那就直接来吧:

https://movie.douban.com/subject/26752088/comments?status=P
https://movie.douban.com/subject/26752088/comments?start=20&limit=20&sort=new_score&status=P
https://movie.douban.com/subject/26752088/comments?start=40&limit=20&sort=new_score&status=P
https://movie.douban.com/subject/26752088/comments?start=60&limit=20&sort=new_score&status=P
.
.
.
https://movie.douban.com/subject/26752088/comments?start=n*20&limit=20&sort=new_score&status=P

这样规律就找到了,只需要通过一个变量改变start的值就可以。 接下来直接给出代码:

词云结果如下图所示:  

在代码里面本文设置了UserAgent池来防止反爬虫,其中需要重点强调的是:注意啦、注意啦、注意啦,注意啦、注意啦、注意啦: 如果在运行代码时遇到这样一个问题:  

不要着急,以上问题可能有两种可能:

    (1) 你可能遭遇反爬虫: 原因如下: 如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫. 有些网站验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)(当然现在很多网站的反爬虫不单单是通过UserAgent进行验证非正常访问,还会通过cookie、爬虫频率等很多方法去判断验证) 解决办法: 可以通过建立User-Agent池和IP池来伪装自己。 (2)你没有登录 有些网站必须是注册、登录,然后获取cookie。进而爬取。豆瓣网就是一个很典型的例子,在没有登录的时候,是可以10页的评论数据。一旦超过10页,并且检测到用户没有登录信息,立即回终止爬虫的进行。所以,在爬取豆瓣电影评论的时候,一定要记得注册账号并登录哦。

三、总结

 
 
经验分享 程序员 微信小程序 职场和发展