python scrapy简单模拟登录的代码分析


Posted in Python onJuly 21, 2021

1、requests模块。直接携带cookies请求页面。

找到url,发送post请求存储cookie。

2、selenium(浏览器自动处理cookie)。

找到相应的input标签,输入文本,点击登录。

3、scrapy直接带cookies。

找到url,发送post请求存储cookie。

# -*- coding: utf-8 -*-
import scrapy
import re
 
class GithubLoginSpider(scrapy.Spider):
    name = 'github_login'
    allowed_domains = ['github.com']
    start_urls = ['https://github.com/login']
 
    def parse(self, response): # 发送Post请求获取Cookies
        authenticity_token = response.xpath('//input[@name="authenticity_token"]/@value').extract_first()
        utf8 = response.xpath('//input[@name="utf8"]/@value').extract_first()
        commit = response.xpath('//input[@name="commit"]/@value').extract_first()
        form_data = {
            'login': 'pengjunlee@163.com',
            'password': '123456',
            'webauthn-support': 'supported',
            'authenticity_token': authenticity_token,
            'utf8': utf8,
            'commit': commit}
        yield scrapy.FormRequest("https://github.com/session", formdata=form_data, callback=self.after_login)
 
    def after_login(self, response): # 验证是否请求成功
        print(re.findall('Learn Git and GitHub without any code!', response.body.decode()))

知识点扩展:

parse_login方法是提交完表单后callback回调函数指定要执行的方法,为了验证是否成功。这里我们直接在response中搜索Welcome Liu这个字眼就证明登录成功。

这个好理解,重点是yield from super().start_resquests(),这个代表着如果一旦登录成功后,就直接带着登录成功后Cookie值,方法start_urls里面的地址。

这样的话登录成功后的response可以直接在parse里面写。

# -*- coding: utf-8 -*-
import scrapy
from scrapy import FormRequest,Request


class ExampleLoginSpider(scrapy.Spider):
    name = "login_"
    allowed_domains = ["example.webscraping.com"]
    start_urls = ['http://example.webscraping.com/user/profile']
    login_url = 'http://example.webscraping.com/places/default/user/login'

    def parse(self, response):
        print(response.text)

    def start_requests(self):
        yield scrapy.Request(self.login_url,callback=self.login)

    def login(self,response):
        formdata = {
            'email':'liushuo@webscraping.com','password':'12345678'}
        yield FormRequest.from_response(response,formdata=formdata,
                                        callback=self.parse_login)
    def parse_login(self,response):
        # print('>>>>>>>>'+response.text)
        if 'Welcome Liu' in response.text:
            yield from super().start_requests()

到此这篇关于python scrapy简单模拟登录的代码分析的文章就介绍到这了,更多相关python scrapy模拟登录的方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中实现定制类的特殊方法总结
Sep 28 Python
Python中的推导式使用详解
Jun 03 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
python 使用值来排序一个字典的方法
Nov 16 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
django基础学习之send_mail功能
Aug 07 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python 解析xml文件的示例
Sep 29 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 Python
python异步的ASGI与Fast Api实现
Jul 16 #Python
Python实现PIL图像处理库绘制国际象棋棋盘
Flask使用SQLAlchemy实现持久化数据
Jul 16 #Python
Python多个MP4合成视频的实现方法
Jul 16 #Python
Python如何解决secure_filename对中文不支持问题
利用Matlab绘制各类特殊图形的实例代码
Flask response响应的具体使用
You might like
浅谈PHP语法(1)
2006/10/09 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
python中pip的安装与使用教程
2018/08/10 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
Python如何批量生成和调用变量
2020/11/21 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
开业典礼主持词
2014/03/21 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
警示教育活动总结
2014/05/05 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
心得体会的写法
2014/09/05 职场文书
家庭贫困证明
2014/09/23 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js