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继承和抽象类的实现方法
Jan 14 Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python中字典的setdefault()方法教程
Feb 07 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
解决Django连接db遇到的问题
Aug 29 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
python开根号实例讲解
Aug 30 Python
python UIAutomator2使用超详细教程
Feb 19 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处理json时中文问题的解决方法
2011/04/12 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
php模板原理讲解
2013/11/13 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
php经典趣味算法实例代码
2020/01/21 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python获取目录下所有文件的方法
2015/06/01 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python实现俄罗斯方块
2018/06/26 Python
PyQt5 多窗口连接实例
2019/06/19 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python基于内置函数type创建新类型
2020/10/22 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
法警的竞聘演讲稿
2014/01/02 职场文书
党员培训思想汇报
2014/01/07 职场文书
中学生评语大全
2014/04/18 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android