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的lambda匿名函数的简单介绍
Apr 25 Python
全面解读Python Web开发框架Django
Jun 30 Python
python文件写入实例分析
Apr 08 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
Pytorch入门之mnist分类实例
Apr 14 Python
Python 获取div标签中的文字实例
Dec 20 Python
python+pyqt5编写md5生成器
Mar 18 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 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文件目录基础操作
2014/11/11 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
Python collections模块实例讲解
2014/04/07 Python
python海龟绘图实例教程
2014/07/24 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
华润集团网上药店:健一网
2016/09/19 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
闪闪的红星观后感
2015/06/08 职场文书
母亲节主题班会
2015/08/14 职场文书
班委竞选稿范文
2015/11/21 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
Python入门之使用pandas分析excel数据
2021/05/12 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python
mysql如何查询连续记录
2022/05/11 MySQL