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 08 Python
Python中的filter()函数的用法
Apr 27 Python
详解Python发送邮件实例
Jan 10 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
Numpy一维线性插值函数的用法
Apr 22 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python实现excel公式格式化的示例代码
Dec 23 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
php5新改动之短标记启用方法
2008/09/11 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP读取Excel类文件
2017/05/15 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
PDO::commit讲解
2019/01/27 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
css配合jquery美化 select
2013/11/29 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
简介Django中内置的一些中间件
2015/07/24 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
Python识别处理照片中的条形码
2020/11/16 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
大学生职业生涯规划范文
2014/01/08 职场文书
联欢会开场白
2015/06/01 职场文书
环保证明
2015/06/23 职场文书
编写python程序的90条建议
2021/04/14 Python
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python