详解使用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中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
详解python单元测试框架unittest
Jul 02 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python基础 range的用法解析
Aug 23 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 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
使用Apache的rewrite技术
2006/06/22 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
php简单判断文本编码的方法
2015/07/30 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
js function使用心得
2010/05/10 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python实现网页录音效果
2020/10/26 Python
用python实现一个简单的验证码
2020/12/09 Python
python opencv肤色检测的实现示例
2020/12/21 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书