前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫课程(十一)|知乎:使用Scrapy模拟登录知乎

爬虫课程(十一)|知乎:使用Scrapy模拟登录知乎

作者头像
黄小怪
发布2018-05-21 17:17:57
1.5K0
发布2018-05-21 17:17:57
举报
文章被收录于专栏:小怪聊职场小怪聊职场

前面爬虫课程七、八、九、十,我把爬虫豆瓣读书的爬虫讲解完毕啦,我们很顺利地爬取了豆瓣读书书籍内容,爬取过程中也不需要用户登陆。

然而,有些时候,我们要爬取某些信息时是需要我们在登陆的情况下才能获取到对应信息的,这个时候我们怎么样使用Scrapy进行模拟登陆呢?接下来的文章我将以爬取知乎问答内容为例来讲解如何使用Scrapy进行模拟登陆。

一、分析知乎登录的请求api

我们先进入知乎的登录页面,输入用户名和密码(为了查看登录时请求的api信息,我这里故意把密码输错),点击登录,查看右边Network信息。

知乎登录

通过Network截取到使用email登录(见下图1)时的请求api为https://www.zhihu.com/login/email(见下图2),请求需要的From Data为_xsrf、password、captcha_type和email,其中captcha_type为固定值2,_xsrf是上一个页面动态获取的,email和password为登录邮箱和密码。

知乎登录需要的值

通过对知乎登录需要提交的From Data信息进行分析得知只有_xsrf这个参数的值是需要动态获取,并且是从上一个页面(https://www.zhihu.com/#signin)进行获取过来的,如果在登录时没有_xsrf值时登录请求会返回校验失败。

如何获取_xsrf?见下图,请求zhihu.com时查看Response信息(下图2),从页面中找出_xsrf值存储的位置(下图3)。

获取_xsrf

好,至此我就把整个思路已经说清楚啦,接下来贴上完整代码。

二、实现知乎登录的代码

代码1

代码2

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档