1. 为什么需要模拟登陆?

获取cookie,能够爬取登陆后的页面的数据

2.使用cookie模拟登陆的场景

(1) cookie过期时间很长,常见于一些不规范的网站

(2) 能在cookie过期之前把搜有的数据拿到

(3) 配合其他程序使用,比如其使用selenium把登陆之后的cookie获取到,然后保存到本地,

scrapy发送请求之前先读取本地cookie

3. 在一个scrapy的项目创建好之后,爬虫的py文件里面的start_urls = [] 里面的url地址是谁来请求的?

可以点击进入到Spider类中的源码中,发现start_urls 列表中的url是由里面的start_resquests()方法执行的,方法里面又        调用了 make_requests_from_url()  

     

4. .重写父类中start_requests()方

设置cookies,把cookies的字符串形式转化为字典的形式

 在yield scrapy.Request()中设置cookies参数

 默认在settings里面已经开启了cookiess,下次请求时会带上,上次请求的cookies

在settings里面设置 COOKIES_DEBUG = True 可以看见cookies在不同的请求里面传递的过程是怎样的

前提是不设置 LOG_LEVEL

5.  利用cookie模拟登陆人人网

首先登陆进去人人网,把登陆进入之后的对应的cookie复制出来

然后在项目的爬虫文件中,进行逻辑代码的编写

# -*- coding: utf-8 -*-
import scrapy
import reclass RenrenSpider(scrapy.Spider):name = 'renren'allowed_domains = ['renren.com']start_urls = ['登陆人人网之后的网址']'''重写父类的start_requests方法'''def start_requests(self):cookies = "自己登陆人人网之后的=cookie"'''转化为字典的形式'''cookies = {i.split("=")[0]: i.split("=")[1] for i in cookies.split("; ")}yield scrapy.Request(self.start_urls[0],callback=self.parse,cookies=cookies   #  设置cookie参数)def parse(self, response):'''我们之匹配到和自己用户名一样的字符串,如果匹配到则说明已经匹配到的登录之后的数据,模拟登陆就成功了'''print(re.findall("自己人人网的用户名", response.body.decode()))yield scrapy.Request("登陆之后的个人信息网址",callback=self.parse_detial)def parse_detial(self, response):print(re.findall("自己人人网的用户名", response.body.decode()))

6. 然后我们运行程序之后,就可以看见,匹配到了登录之后的自己人人网的用户名

7. 我们还可以在scrapy.Request()  里面设置headers参数

    def start_requests(self):cookies = "自己登陆人人网之后的=cookie"'''转化为字典的形式'''cookies = {i.split("=")[0]: i.split("=")[1] for i in cookies.split("; ")}'''设置headers参数,也可以加一些更多的请求头'''headers = {"Cookie":cookies}yield scrapy.Request(self.start_urls[0],callback=self.parse,headers=headers   #  设置headers参数)

Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆))相关推荐

  1. Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)

    1.CrawlSpider类通过一些规则(rules),使对于链接(网页)的爬取更具有通用性, 换句话说,CrawlSpider爬虫为通用性的爬虫, 而Spider爬虫更像是为一些特殊网站制定的爬虫. ...

  2. Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)

    上个博客写了:  Scrapy的概念以及Scrapy的详细工作流程 https://blog.csdn.net/wei18791957243/article/details/86154068 1.sc ...

  3. Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)

    1.在有的网站的的登录的界面上,有用户名以及输入密码的输入框 然后输入账号和密码进去,点击登录,后台就会把得到的数据发送过去,验证之后然后就登录成功了,就会跳转到 响应的登录之后的网站 2. 我们可以 ...

  4. Scrapy框架的学习(4.scrapy中的logging模块记录日志文件以及普通的项目中使用)

    logging模块使用 为了让我们自己希望输出到终端的内容能容易看一些: 我们可以在setting中设置log级别 在setting中添加一行(全部大写):LOG_LEVEL = "WARN ...

  5. Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)

    1.settings.py里面的参数说明 每个参数其对应的官方得文档的网址 # -*- coding: utf-8 -*-# Scrapy settings for tencent project # ...

  6. Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))

    1.Downloader Middlewares (下载中间键):引擎会先把Requets对象交给下载中间键再然后交给Downloader 2.使用方法: (1) 编写一个Downloader Mid ...

  7. Scrapy框架的学习(1.scrapy的概念以及scrapy的工作流程)

    scrapy的概念 1.为什么要学习Scrapy?  因为会让我们的爬虫更快.更强 2.什么是scrapy? (1) Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现 ...

  8. scrapy框架_Python学习之Scrapy框架

    爬虫界江湖地位No.1 说起Python,不得不说到它的爬虫应用,由于Python的短小精悍,用它来开发爬虫应用是最合适不过了,基于Python抓取网页的库有很多,例如requests,beatifu ...

  9. Scrapy框架的学习(一)

    1. Scrapy概述 1. 为什么要学习scrapy框架 爬虫必备的技术,面试会问相关的知识. 让我们的爬虫更快更强大.(支持异步爬虫) 2. 什么是Scrapy? 异步爬虫框架:Scrapy是一个 ...

最新文章

  1. python 正则表达式贪婪模式与非贪婪模式
  2. DNS服务,A记录,URL转发,MX记录,NS记录,CNAME记录,解释与设置教
  3. 分布式主键解决方案----Twitter 雪花算法的原理(Java 版)
  4. Spring 面试问题
  5. 为什么阿里程序猿纷纷在内网晒代码?
  6. python详细安装教程环境配置-python环境配置详细步骤
  7. [Curator] Path Cache 的使用与分析
  8. Windows平台下Makefile学习笔记
  9. 数据结构 最长公共子序列问题
  10. syslog 华为 服务器_删除华为云服务器自带的探针
  11. 销售订单无法使用折扣(其他可以正常使用)
  12. 数据库删除表中多列语法总结
  13. 7- 代码段权限检查与 jmp
  14. Cocos2d-x3.2刀塔创奇三消游戏源码,跑酷游戏源码,塔防游戏源码
  15. 使用python的matplotlib(pyplot)画折线图和柱状图
  16. 炉石传说 爬取全部卡牌
  17. 数据库的基本命令 创建数据库 创建表 插入数据
  18. Python-内置函数
  19. Javascript特效之可翻阅上一条下一条的动态文字
  20. 戴森空气净化器php00使用,戴森空气净化器如何使用 戴森空气净化器使用方法介绍【图文】...

热门文章

  1. 01 | Spring Data JPA 初识
  2. java实现doc向swf格式的转换 转_java实现doc向swf格式的转换 转
  3. 项目交接文档_会计实操||会计人员交接范例
  4. vue怎么调用子元素的方法_vue.js 父组件如何触发子组件中的方法
  5. mysql约束_从零开始学 MySQL - SQL 约束分类
  6. 深入理解计算机底层为什么采用补码运算【如何理解二进制计算高位溢出】
  7. 【如何利用idea提交本地代码到git远程仓库,史上最详细教程,建议收藏!】
  8. 面试官:什么是HTTP连接池?你怎么回答?Feign性能调优之HTTP连接池
  9. java修改字节码技术,Javassist修改class,ASM修改class
  10. 华为平板matepad支持鸿蒙2.0,首款鸿蒙OS 2.0平板,华为正式公布Matepad Pro2,搭载麒麟9000...