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 相关文章推荐
python3之微信文章爬虫实例讲解
Jul 12 Python
python如何定义带参数的装饰器
Mar 20 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
python可视化实现代码
Jan 15 Python
pycharm配置git(图文教程)
Aug 16 Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 Python
基于python判断目录或者文件代码实例
Nov 29 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
Python使用Matlab命令过程解析
Jun 04 Python
python os模块在系统管理中的应用
Jun 22 Python
python一些性能分析的技巧
Aug 30 Python
深度学习详解之初试机器学习
Apr 14 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
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
Vue基本指令实例图文讲解
2021/02/25 Vue.js
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
python opencv之分水岭算法示例
2018/02/24 Python
python实现人民币大写转换
2018/06/20 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
现场施工员岗位职责
2014/03/10 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
房屋出售协议书
2014/04/10 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
倡议书的格式写法
2015/04/28 职场文书
交通处罚决定书
2015/06/24 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS