详解使用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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
urllib2自定义opener详解
Feb 07 Python
Python中的zip函数使用示例
Jan 29 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
详细分析python3的reduce函数
Dec 05 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
python高阶爬虫实战分析
Jul 29 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 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
2021年最新CPU天梯图
2021/03/04 数码科技
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
vue项目实战总结篇
2018/02/11 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
node中的session的具体使用
2018/09/14 Javascript
Python open读写文件实现脚本
2008/09/06 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
python实现滑雪者小游戏
2020/02/22 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
公务员培训心得体会
2013/12/28 职场文书
区三好学生主要事迹
2014/01/30 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
学雷锋标语
2014/06/25 职场文书
运动会演讲稿100字
2014/08/25 职场文书
2015年护士节活动总结
2015/02/10 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
手机销售员岗位职责
2015/04/11 职场文书
企业宣传稿范文
2015/07/23 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python