详解使用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内置的字符串处理函数整理
Jan 29 Python
在Python中处理XML的教程
Apr 29 Python
pymongo给mongodb创建索引的简单实现方法
May 06 Python
python 排序算法总结及实例详解
Sep 28 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
python3监控CentOS磁盘空间脚本
Jun 21 Python
Python json模块dumps、loads操作示例
Sep 06 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Python numpy多维数组实现原理详解
Mar 10 Python
python 检测图片是否有马赛克
Dec 01 Python
Python 数据科学 Matplotlib图库详解
Jul 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
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
生成二维码方法汇总
2014/12/26 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
小程序实现图片移动缩放效果
2020/05/26 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
python中装饰器级连的使用方法示例
2017/09/29 Python
python中的print()输出
2019/04/12 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
python cookie反爬处理的实现
2020/11/01 Python
Django中ORM的基本使用教程
2020/12/22 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
《搭石》教学反思
2014/04/07 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
校园活动策划方案
2014/06/13 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android