温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用Python登录豆瓣并爬取影评

发布时间:2021-08-24 20:20:38 来源:亿速云 阅读:128 作者:chen 栏目:开发技术

这篇文章主要介绍“如何用Python登录豆瓣并爬取影评”,在日常操作中,相信很多人在如何用Python登录豆瓣并爬取影评问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python登录豆瓣并爬取影评”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目录
  • 一、需求背景

  • 二、功能描述

  • 三、技术方案

  • 四、登录豆瓣

    • 1.分析豆瓣登录接口

    • 2.代码实现登录豆瓣

    • 3.保存会话状态

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

  • 五、爬取影评

    • 1.分析豆瓣影评接口

    • 2.爬取一条影评数据

    • 3.影评内容提取

    • 4.批量爬取

  • 六、分析影评

    • 1.使用结巴分词

  • 七、总结

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

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

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

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

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

    一、需求背景

    豆瓣口碑一直不错,有些书或者电影的推荐都很不错,所以我们今天来爬取下豆瓣的影评,然后生成词云,看看效果如何吧!

    二、功能描述

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

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

    如何用Python登录豆瓣并爬取影评

    三、技术方案

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

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

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

    3. 使用词云做影评数据分析

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

    四、登录豆瓣

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

    1.分析豆瓣登录接口

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

    如何用Python登录豆瓣并爬取影评 

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

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

    如何用Python登录豆瓣并爬取影评

    2.代码实现登录豆瓣

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

    如何用Python登录豆瓣并爬取影评

    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维持会话状态!

    如何用Python登录豆瓣并爬取影评 

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

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

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

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

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

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

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

    如何用Python登录豆瓣并爬取影评 

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

    五、爬取影评

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

    1.分析豆瓣影评接口

    首先在豆瓣中找到自己想要分析的电影,这里选择一部美国电影《荒野生存》

    如何用Python登录豆瓣并爬取影评 

    然后下拉找到影评,调出调试窗口,找到加载影评的URL

    如何用Python登录豆瓣并爬取影评

    2.爬取一条影评数据

    但是爬取下来的是一个HTML网页数据,我们需要将影评数据提取出来

    如何用Python登录豆瓣并爬取影评

    3.影评内容提取

    上图中我们可以看到爬取返回的是html,而影评数据便是嵌套在html标签中,如何提取影评内容呢?

    这里我们使用正则表达式来匹配想要的标签内容,当然也有更高级的提取方法,比如使用某些库(比如bs4、xpath等)去解析html提取内容,而且使用库效率也比较高,但这是我们后面的内容,我们今天就用正则来匹配!

    我们先来分析下返回html 的网页结构

    如何用Python登录豆瓣并爬取影评 

    我们发现影评内容都是在<span class="short"></span>这个标签里,那我们 就可以写正则来匹配这个标签里的内容啦!

    如何用Python登录豆瓣并爬取影评 

    检查下提取的内容

    如何用Python登录豆瓣并爬取影评

    4.批量爬取

    我们爬取、提取、保存完一条数据之后,我们来批量爬取一下。根据前面几次爬取的经验,我们知道批量爬取的关键在于找到分页参数,我们可以很快发现URL中有一个start参数便是控制分页的参数。

    如何用Python登录豆瓣并爬取影评 

    这里只爬取了25页就爬完,我们可以去浏览器中验证一下,是不是真的只有25页,猪哥验证过确实只有25页!

    六、分析影评

    数据抓取下来之后,我们就来使用词云分析一下这部电影吧!

    1.使用结巴分词

    因为我们下载的影评是一段一段的文字,而我们做的词云是统计单词出现的次数,所以需要先分词!

    如何用Python登录豆瓣并爬取影评

    2.使用词云分析

    如何用Python登录豆瓣并爬取影评 

    最终成果:

    如何用Python登录豆瓣并爬取影评 

    七、总结

    今天我们以爬取豆瓣为例子,学到了不少的东西,来总结一下:

    1. 学习如何使用requests库发起POST请求

    2. 学习了如何使用requests库登录网站

    3. 学习了如何使用requests库的Session对象保持会话状态

    4. 学习了如何使用正则表达式提取网页标签中的内容

    鉴于篇幅有限,爬虫过程中遇到的很多细节和技巧并没有完全写出来,所以希望大家能自己动手实践

    到此,关于“如何用Python登录豆瓣并爬取影评”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI