为什么你用Scrapy 无法使用 Cookies登录

简介: 为什么你用Scrapy 无法使用 Cookies登录

摄影:产品经理生活里的烟火气

我们知道,网站使用 Cookies 来记录用户的登录状态。如果我们从浏览器中把 Cookies 复制下来,放到爬虫中,在某些情况下,就可以让爬虫直接访问到登录后的页面。

以练习页面http://exercise.kingname.info/exercise_login_success为例。在没有登录的情况下,访问这个地址,会自动跳转到登录页面,如下图所示:

输入用户名kingname,密码genius,点选自动登录,并点击登录按钮,跳转到登录成功的页面,如下图所示:


一旦登录成功,即使关闭浏览器再重新打开该网址,依然会直接进入登录后的页面。

我们在 Chrome 的开发者工具中可以看到在登录后,当我们刷新页面时发送的请求:

Request Headers里面可以看到请求头,在请求头中包含了 Cookie项。

当我们使用 Requests 访问这个网址时,只要请求头中含有这个 Cookie,我们就能直接访问到请求成功的页面,如下图所示:

整个过程非常简单并直观。

但如果你想使用 Scrapy 做同样的事情,你会发现登录失败了。如下图所示:

这其中的关键,就在于 Scrapy 发起请求的时候,并不会使用 Headers 中的 Cookie,而是单独有一个cookies参数。

当使用 Request 时,Cookie在 Headers 中是以字符串的形式存在,不同的项目之间使用分号连接,项目内的键值之间使用冒号连接。

但是在 Scrapy 中,传给cookies参数的值是一个字典,字典的 key 就是各个项目的 key,值就是各个项目的值。

所以我们对 Scrapy 的代码稍作修改,从Headers 中移除 Cookie 项,并改成字典形式,传给 cookies参数,再次请求发现请求成功:

目录
相关文章
|
11月前
|
数据采集 存储 NoSQL
实现网页认证:使用Scrapy-Selenium处理登录
在网络爬虫的世界中,我们经常需要面对一些需要用户认证的网页,如登录、注册验证等。本文将介绍如何使用Scrapy-Selenium来处理这类网页,实现自动化登录和爬取。
223 0
实现网页认证:使用Scrapy-Selenium处理登录
|
数据采集 中间件 Python
Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟(2)
Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟(2)
316 0
Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟(2)
|
数据采集 中间件 Python
Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟(1)
Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟(1)
295 0
|
数据采集 开发者 Python
14、web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
打码接口文件 # -*- coding: cp936 -*- import sys import os from ctypes import * # 下载接口放目录 http://www.
1213 0
|
数据采集 Web App开发 JavaScript
12、web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代star...
1736 0
|
Python 数据安全/隐私保护
scrapy登录豆瓣并修改个人信息
settings.py 文件中添加请求头,robots改为False。 代码中注释较为详细,看不懂的私聊哦 import scrapy from urllib import request from PIL import Image class DoubanLoginSpiderSpider(scrapy.
1080 0
|
Python 数据采集
|
Web App开发 数据采集 iOS开发
Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scrapy登录知乎之前,我们先通过requests模块登录知乎,来熟悉这个登录过程 不过在这之前需要了...
1818 0
|
Python 数据采集 Java
Scrapy基础——Cookies和Session
我在Python爬虫基础-模拟登陆曾经谈过Cookies和Session。那么如何我想使用Scrapy进行模拟登陆,那么肯定要逃不过Cookies和Session。
2463 0
|
2月前
|
数据采集 存储 数据处理
Scrapy:Python网络爬虫框架的利器
在当今信息时代,网络数据已成为企业和个人获取信息的重要途径。而Python网络爬虫框架Scrapy则成为了网络爬虫工程师的必备工具。本文将介绍Scrapy的概念与实践,以及其在数据采集和处理过程中的应用。
32 1