详解使用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 相关文章推荐
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
Python 类的继承实例详解
Mar 25 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python字符串和常用数据结构知识总结
May 21 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
4种非常实用的python内置数据结构
Apr 28 Python
Python基本知识点总结
Apr 07 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
PHP4中session登录页面的应用
2008/07/25 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
js实现进度条的方法
2015/02/13 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JavaScript类的写法
2016/09/17 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
python将字符串转换成数组的方法
2015/04/29 Python
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python多继承顺序实例分析
2018/05/26 Python
python通过链接抓取网站详解
2019/11/20 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
免税水晶:Duty Free Crystal
2019/05/13 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
高级文秘工作总结的自我评价
2013/09/28 职场文书
房产委托公证书样本
2014/04/04 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
小学优秀教师材料
2014/12/15 职场文书
公司庆典欢迎词
2015/01/26 职场文书