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 探针的实现原理
Apr 23 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python中的sort()方法使用基础教程
Jan 08 Python
通过Python实现自动填写调查问卷
Sep 06 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
Python模块、包(Package)概念与用法分析
May 31 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
python用字节处理文件实例讲解
Apr 13 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新手上路(十二)
2006/10/09 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
angular十大常见问题
2017/03/07 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
Python的多态性实例分析
2015/07/07 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
深入理解python中的atexit模块
2017/03/07 Python
Python模拟登陆实现代码
2017/06/14 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
党支部承诺书范文
2014/03/28 职场文书
团日活动总结范文
2014/04/25 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
民事辩护词范文
2015/05/21 职场文书
合理化建议书范文
2015/09/14 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
《称赞》教学反思
2016/02/17 职场文书