Python登录豆瓣并爬取影评

Python登录豆瓣并爬取影评

上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面:

会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)

个性化设置(如用户自定义设置、主题等)

浏览器行为跟踪(如跟踪分析用户行为等)

我们今天就用requests库来登录豆瓣然后爬取影评为例子,
用代码讲解下Cookie的会话状态管理(登录)功能

此教程仅用于学习,不得商业获利!如有侵害任何公司利益,请告知删除!

一、需求背景

之前猪哥带大家爬取了优酷的弹幕并生成词云图片,发现优酷弹幕的质量并不高,有很多介词和一些无效词,比如:哈哈、啊啊、这些、那些。。。而豆瓣口碑一直不错,有些书或者电影的推荐都很不错,所以我们今天来爬取下豆瓣的影评,然后生成词云,看看效果如何吧!

二、功能描述

我们使用requests库登录豆瓣,然后爬取影评,最后生成词云!

为什么我们之前的案例(京东、优酷等)中不需要登录,而今天爬取豆瓣需要登录呢?那是因为豆瓣在没有登录状态情况下只允许你查看前200条影评,之后就需要登录才能查看,这也算是一种反扒手段!

在这里插入图片描述

三、技术方案

我们看下简单的技术方案,大致可以分为三部分:

分析豆瓣的登录接口并用requests库实现登录并保存cookie

分析豆瓣影评接口实现批量抓取数据

使用词云做影评数据分析

方案确定之后我们就开始实际操作吧!

四、登录豆瓣

做爬虫前我们都是先从浏览器开始,使用调试窗口查看url。

1.分析豆瓣登录接口

打开登录页面,然后调出调试窗口,输入用户名和密码,点击登录。

在这里插入图片描述


这里猪哥建议输入错误的密码,这样就不会因为页面跳转而捕捉不到请求!上面我们便获取到登录请求的URL:https://accounts.douban.com/j/mobile/login/basic

因为是一个POST请求,所以我们还需要看看请求登录时携带的参数,我们将调试窗口往下拉查看Form Data

在这里插入图片描述

2.代码实现登录豆瓣

得到登录请求URL和参数后,我们就可以来用requests库来写一个登录功能!

在这里插入图片描述

3.保存会话状态

上期我们在爬取优酷弹幕的时候我们是复制浏览器中的Cookie到请求头中这来来保存会话状态,但是我们如何让代码自动保存Cookie呢?

也许你见过或者使用过urllib库,它用来保存Cookie的方式如下:

cookie = http.cookiejar.CookieJar() handler = urllib.request.HttpCookieProcessor(cookie) opener = urllib.request.build_opener(handler) opener(url)

但是前面我们介绍requests库的时候就说过:

requests库是一个基于urllib/3的第三方网络库,它的特点是功能强大,API优雅。由上图我们可以看到,对于http客户端python官方文档也推荐我们使用requests库,实际工作中requests库也是使用的比较多的库。

所以今天我们来看看requests库是如何优雅的帮我们自动保存Cookie的?我们来对代码做一点微调,使之能自动保存Cookie维持会话状态!

在这里插入图片描述


上述代码中,我们做了两处改动:

在最上面增加一行s = requests.Session(),生成Session对象用来保存Cookie

发起请求不再是原来的requests对象,而是变成了Session对象

我们可以看到发起请求的对象变成了session对象,它和原来的requests对象发起请求方式一样,只不过它每次请求会自动带上Cookie,所以后面我们都用Session对象来发起请求!

4.这个Session对象是我们常说的session吗?

讲到这里也许有同学会问:requests.Session对象是不是我们常说的session呢?

答案当然不是,我们常说的session是保存在服务端的,而requests.Session对象只是一个用于保存Cookie的对象而已,我们可以看看它的源码介绍

在这里插入图片描述


所以大家千万不要将requests.Session对象与session技术搞混了!

五、爬取影评

我们实现了登录和保存会话状态之后,就可以开始干正事啦!

1.分析豆瓣影评接口

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspgzw.html