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中使用第三方模块的教程
Apr 27 Python
python数据结构之图的实现方法
Jul 08 Python
利用python发送和接收邮件
Sep 27 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
Python实现GIF图倒放
Jul 16 Python
Python排序函数的使用方法详解
Dec 11 Python
python 基于opencv实现图像增强
Dec 23 Python
Python实现京东抢秒杀功能
Jan 25 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python实现将xml导入至excel
2015/11/20 Python
pytorch 共享参数的示例
2019/08/17 Python
python3正则模块re的使用方法详解
2020/02/11 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
python 检测图片是否有马赛克
2020/12/01 Python
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
几个Linux面试题笔试题
2016/08/01 面试题
《记金华的双龙洞》教学反思
2014/04/19 职场文书
幼师自荐信范文
2015/03/06 职场文书
工作自我评价范文
2019/03/21 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python