详解使用scrapy进行模拟登陆三种方式


Posted in Python onFebruary 21, 2021

scrapy有三种方法模拟登陆方式:
- 直接携带cookies
- 找url地址,发送post请求存储cookie
- 找到对应的form表单,自动解析input标签,自动解析post请求的url地址,自动带上数据,自动发送请求

1、携带cookies登陆github

import scrapy
import re
 
class Login1Spider(scrapy.Spider):
  name = 'login1'
  allowed_domains = ['github.com']
  start_urls = ['https://github.com/NoobPythoner'] # 这是一个需要登陆以后才能访问的页面
 
  def start_requests(self): # 重构start_requests方法
    # 这个cookies_str是抓包获取的
    cookies_str = '...' # 抓包获取
    # 将cookies_str转换为cookies_dict
    cookies_dict = {i.split('=')[0]:i.split('=')[1] for i in cookies_str.split('; ')}
    yield scrapy.Request(
      self.start_urls[0],
      callback=self.parse,
      cookies=cookies_dict
    )
 
  def parse(self, response): # 通过正则表达式匹配用户名来验证是否登陆成功
    result_list = re.findall(r'noobpythoner|NoobPythoner', response.body.decode())
    print(result_list)
    pass

注意:

scrapy中cookie不能够放在headers中,在构造请求的时候有专门的cookies参数,能够接受字典形式的coookie
在setting中设置ROBOTS协议、USER_AGENT

2、使用scrapy.FormRequest()登录

通过scrapy.FormRequest能够发送post请求,同时需要添加fromdata参数作为请求体,以及callback

yield scrapy.FormRequest(
       "https://github.com/session",
       formdata={
         "authenticity_token":authenticity_token,
         "utf8":utf8,
         "commit":commit,
         "login":"****",
         "password":"****"
       },
       callback=self.parse_login
     )

3、使用scrapy.Formrequest.from_response登陆github

import scrapy
import re
 
class Login3Spider(scrapy.Spider):
  name = 'login3'
  allowed_domains = ['github.com']
  start_urls = ['https://github.com/login']
 
  def parse(self, response):
    yield scrapy.FormRequest.from_response(
      response, # 传入response对象,自动解析
      # 可以通过xpath来定位form表单,当前页只有一个form表单时,将会自动定位
      formxpath='//*[@id="login"]/form', 
      formdata={'login': '****', 'password': '***'},
      callback=self.parse_login
    )
 
  def parse_login(self,response):
    ret = re.findall(r"noobpythoner|NoobPythoner", response.text)
    print(ret)

到此这篇关于详解使用scrapy进行模拟登陆三种方式的文章就介绍到这了,更多相关scrapy模拟登陆内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python制作Windows系统服务
Mar 25 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
在django view中给form传入参数的例子
Jul 19 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
详解python metaclass(元类)
Aug 13 Python
利用Python如何画一颗心、小人发射爱心
Feb 21 #Python
python 第三方库paramiko的常用方式
Feb 20 #Python
Python中Qslider控件实操详解
Feb 20 #Python
python基于selenium爬取斗鱼弹幕
Feb 20 #Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 #Python
python爬虫用request库处理cookie的实例讲解
Feb 20 #Python
python 多线程爬取壁纸网站的示例
Feb 20 #Python
You might like
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
php 文章调用类代码
2011/08/11 PHP
PHP 透明水印生成代码
2012/08/27 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
script标签的 charset 属性使用说明
2010/12/04 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
js的对象与函数详解
2019/01/21 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
jQuery实现增删改查
2020/12/22 jQuery
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
Python 里最强的地图绘制神器
2021/03/01 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
中国跨境电商:Tomtop
2017/03/16 全球购物
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
经济系大学生求职信
2013/10/01 职场文书
会计员岗位职责
2014/03/15 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js
Win11 BitLocker 驱动器加密
2022/04/19 数码科技